2010-10-02 2 views
2

Я (еще раз) борюсь с созданием предварительно скомпилированных заголовков в сочетании с 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 определен.

я должен был бы ваша помощь в следующем:

  1. ли выше способ получить флаги компилятора правильно?
  2. Есть ли лучший, более простой и простой способ сделать это?
  3. Почему -DQT_DEBUG не отображается в COMPILE_DEFINITIONS или COMPILE_DEFINITIONS_${CMAKE_BUILD_TYPE}

ответ

1

Если вы используете 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") 

Я пытаюсь себя использовать скомпилированные заголовки с сырым GCC на Linux через CMake, но Я еще не понял это. Похоже, что он работает, но я не вижу никаких улучшений скорости.

Edit: мне удалось использовать PCH в НКУ, наконец, с помощью макроса можно найти здесь: http://www.mail-archive.com/[email protected]/msg04394.html

+0

Спасибо за подсказку. К сожалению, это работает только при создании с XCode, но не при создании обычного файла make. – doberkofler

Смежные вопросы