2

I'm (once again) struggling with the creation of precompiled headers in conjunction with gcc and Qt on the Apple platform.

When now creating my precompiled header I use a code section (based on good old "PCHSupport_26.cmake") to extract the compile flags as follows:

STRING(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" _flags_var_name) SET(_args ${CMAKE_CXX_FLAGS} ${${_flags_var_name}}) GET_DIRECTORY_PROPERTY(DIRINC INCLUDE_DIRECTORIES ) FOREACH(_item ${DIRINC}) LIST(APPEND _args "-I${_item}") ENDFOREACH(_item) GET_DIRECTORY_PROPERTY(_defines_global COMPILE_DEFINITIONS) LIST(APPEND defines ${_defines_global}) STRING(TOUPPER "COMPILE_DEFINITIONS_${CMAKE_BUILD_TYPE}" _defines_for_build_name) GET_DIRECTORY_PROPERTY(defines_build ${_defines_for_build_name}) LIST(APPEND _defines ${_defines_build}) FOREACH(_item ${_defines}) LIST(APPEND _args "-D${_item}") ENDFOREACH(_item ${_defines}) LIST(APPEND _args -c ${CMAKE_CURRENT_SOURCE_DIR}/${PRECOMPILED_HEADER} -o ${_gch_filename}) SEPARATE_ARGUMENTS(_args) 

Unfortunately the above compiler flags miss two important parameter that CMake does generate when using the build-in compiler rules: -DQT_DEBUG and when compiling with the generated precompiled header, I get errors as follows: file.h: not used because QT_DEBUG is defined.

I would need your help with the following:

  1. Is the above way to retrieve the compiler flags correct ?
  2. Is there a better, easier, simpler way to do this ?
  3. Why does -DQT_DEBUG not show up in COMPILE_DEFINITIONS or COMPILE_DEFINITIONS_${CMAKE_BUILD_TYPE}

1 Answer 1

1

If you are using XCode simply:

 SET_TARGET_PROPERTIES(${target} PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES) SET_TARGET_PROPERTIES(${target} PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${target}/std.h") 

I'm trying myself to use precompiled headers with raw gcc on linux through CMake but I haven't still figured it out. It look like it's working but I don't see any speed improvements.

Edit: I managed to use pch in gcc finally with the macro you can find here: http://www.mail-archive.com/[email protected]/msg04394.html

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you for the hint. Unfortunately this is only working when building with XCode but not when generating a regular make file.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.