CMake,Qt,gcc和预编译头文件
问题描述:
我(再一次)在Apple平台上与gcc和Qt一起创建预编译头文件。CMake,Qt,gcc和预编译头文件
现在,当我创建预编译的头我用一个代码段(基于良好的老“PCHSupport_26.cmake”)提取编译标志如下:
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)
不幸的是,上面的编译器标志错过了两个重要参数在使用内置编译器规则时,CMake确实会生成: -DQT_DEBUG
并且在使用生成的预编译头进行编译时,出现如下错误: file.h:因为定义了QT_DEBUG
,所以未使用。
我需要用下面的帮助:
- 是检索编译器标志正确上述方法是什么?
- 有没有更好,更简单,更简单的方法来做到这一点?
- 为什么
-DQT_DEBUG
不COMPILE_DEFINITIONS
或COMPILE_DEFINITIONS_${CMAKE_BUILD_TYPE}
答
显示如果您使用的XCode简单:
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")
我想通过自己的CMake使用与原GCC预编译头文件在Linux上,但我还没有弄明白。它看起来像在工作,但我没有看到任何速度的提高。
编辑: 我设法使用GCC PCH最后用你可以在这里找到宏:http://www.mail-archive.com/[email protected]/msg04394.html
谢谢你的提示。不幸的是,这只在使用XCode构建时才起作用,但在生成常规构建文件时不起作用。 – doberkofler 2010-10-20 04:34:21