2
我(再一次)在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構建時才起作用,但在生成常規構建文件時不起作用。 – doberkofler 2010-10-20 04:34:21