我(再次)在 Apple 平台上与 gcc 和 Qt 一起努力创建预编译头文件。
现在创建我的预编译头文件时,我使用代码部分(基于良好的旧“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: not used because QT_DEBUG
is defined。
我需要您在以下方面的帮助:
- 上述检索编译器标志的方法是否正确?
- 有没有更好、更简单、更简单的方法来做到这一点?
- 为什么
-DQT_DEBUG
没有出现在COMPILE_DEFINITIONS
或COMPILE_DEFINITIONS_${CMAKE_BUILD_TYPE}