Я (еще раз) борюсь с созданием предварительно скомпилированных заголовков в сочетании с gcc и Qt на платформе Apple.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 генерирует при использовании правил компилятора build-in: -DQT_DEBUG
, а при компиляции с сгенерированным предварительно скомпилированным заголовком я получаю следующие ошибки: file.h: не используется, поскольку QT_DEBUG
определен.
я должен был бы ваша помощь в следующем:
- ли выше способ получить флаги компилятора правильно?
- Есть ли лучший, более простой и простой способ сделать это?
- Почему
-DQT_DEBUG
не отображается вCOMPILE_DEFINITIONS
илиCOMPILE_DEFINITIONS_${CMAKE_BUILD_TYPE}
Спасибо за подсказку. К сожалению, это работает только при создании с XCode, но не при создании обычного файла make. – doberkofler