[CMake] Macro for adding cflags, odd quirk with CHECK_C_COMPILER_FLAG

Campbell Barton ideasman42 at gmail.com
Thu Dec 16 13:07:37 EST 2010


Hi, we were having some problems with warnings and gcc versions so I
thought to write a macro that adds a flag to any string (typically
CMAKE_C_FLAGS)

ADD_CHECK_C_COMPILER_FLAG(CMAKE_C_FLAGS -Wno-unknown-pragmas)

...this is the macro.

macro(ADD_CHECK_C_COMPILER_FLAG
	_CFLAGS
	_FLAG)

	include(CheckCCompilerFlag)

	# odd workaround
	set(CFLAG_TEST "CFLAG_TEST")
	CHECK_C_COMPILER_FLAG("${_FLAG}" CFLAG_TEST)
	if(CFLAG_TEST)
		# message(STATUS "Using CFLAG: ${_FLAG}")
		set(${_CFLAGS} "${${_CFLAGS}} ${_FLAG}")
	else()
		message(STATUS "Unsupported CFLAG: ${_FLAG}")
	endif()
endmacro()


My question is why this is needed?
	set(CFLAG_TEST "CFLAG_TEST")
	CHECK_C_COMPILER_FLAG("${_FLAG}" CFLAG_TEST)

If I do this (as I see in other examples online)...
	CHECK_C_COMPILER_FLAG("${_FLAG}" CFLAG_TEST)

This if check fails in CheckCSourceCompiles.cmake:28 ...

MACRO(CHECK_C_SOURCE_COMPILES SOURCE VAR)
  IF("${VAR}" MATCHES "^${VAR}$")

This is confusing since from what I can tell CFLAG_TEST can be an
undefined variable.
Any idea whats going on?, CMake 2.8.3

-- 
- Campbell


More information about the CMake mailing list