How do I define a variable when I call CMake, so that qtcreator knows it is defined?

cmake, qt-creator

Solution

Another alternative would be to use a configured header file, and include it only where you need the definition:

# in CMakeLists.txt
configure_file(
  ${CMAKE_CURRENT_SOURCE_DIR}/my_defs.h.in
  ${CMAKE_CURRENT_BINARY_DIR}/my_defs.h
  )

include_directories(${CMAKE_CURRENT_BINARY_DIR})

and

// in my_defs.h.in
#cmakedefine VARIABLE
  // configure_file converts #cmakedefine of a named CMake variable
  // into a C++ #define of a C++ pre-processor symbol

and finally

// in various C++ source or header files, but only as needed:
#include "my_defs.h"
#ifdef VARIABLE
  doSome_VARIABLE_SpecificStuff();
#endif

I do not use QtCreator regularly, so I don't know if this technique works in terms of their syntax highlighting, but I'd assume it would, since they must read header files in order to do a proper job of it...

Problem

I have a section of code that is conditionally activated depending on a #define, like this: ``` #ifdef VARIABLE code.function(); #endif ``` The cmake script has an 'options' command that sets the VARIABLE like this: ``` option(VARIABLE "Want to use VARIABLE?" ON) if(VARIABLE) message(STATUS "VARIABLE") set(VARIABLE_FLAG "-DVARIABLE") endif() set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${VARIABLE_FLAG} -Wall") ``` I'm using cmake to build the project and qtcreator as IDE. My problem is that qtcreator thinks that VARIABLE is not defined so my code has is not highlighted, but when I build it on a console, VARIABLE is defined. So, what parameters should I pass to qtcreator to run cmake, so that it knows VARIABLE is defined and highlights my code? Is there a way to do this? Ps: I just use qtcreator to edit files, the build part is done via console commands.

Original source