2010-10-02 6 views
2

Je suis (encore une fois) aux prises avec la création d'en-têtes précompilés en conjonction avec gcc et Qt sur la plate-forme Apple.CMake, Qt, gcc et les en-têtes précompilés

Lors de la création maintenant mon en-tête précompilé J'utilise une section de code (basé sur le bon vieux « PCHSupport_26.cmake ») pour extraire les Compile drapeaux comme suit:

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) 

Malheureusement, les drapeaux du compilateur ci-dessus manquer deux paramètres importants que CMake génère lors de l'utilisation des règles du compilateur incorporé: -DQT_DEBUG et lors de la compilation avec l'en-tête précompilé généré, j'obtiens les erreurs comme suit: file.h: non utilisé car QT_DEBUG est défini.

je besoin de votre aide avec ce qui suit:

  1. est la manière ci-dessus pour récupérer les drapeaux du compilateur correct?
  2. Existe-t-il un moyen plus simple, plus simple et plus simple de faire cela?
  3. Pourquoi ne -DQT_DEBUG montre pas dans COMPILE_DEFINITIONS ou COMPILE_DEFINITIONS_${CMAKE_BUILD_TYPE}

Répondre

1

Si vous utilisez XCode simplement:

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") 

Je suis moi-même essayer d'utiliser les en-têtes précompilés avec gcc cru sur linux par CMake, mais Je ne l'ai pas encore compris. On dirait que ça marche mais je ne vois pas d'amélioration de la vitesse.

Edit: Je réussi à utiliser pch dans gcc enfin avec la macro que vous pouvez trouver ici: http://www.mail-archive.com/[email protected]/msg04394.html

+0

Merci pour l'astuce. Malheureusement, cela ne fonctionne que lors de la construction avec XCode mais pas lors de la génération d'un fichier make normal. – doberkofler