Comment vérifier si find_package trouvé le paquet (boost)
Je veux pas ajouter un coup de pouce.cxx si cmake find_package pas trouvé de boost installé. Ne find_package retourner quelque chose que je peux enrouler dans la condition de compiler boost.cxx ou pas. Voici mon fichier cmake:
add_executable (complex complex.cxx lexer.cxx boost.cxx ../../src/lili.cxx ../../src/lilu.cxx)
# Make sure the compiler can find all include files
include_directories (../../src)
include_directories (.)
# Make sure the linker can find all needed libraries
# rt: clock_gettime()
target_link_libraries(complex rt)
# Install example application
install (TARGETS complex
RUNTIME DESTINATION bin)
IF(UNIX)
find_package(Boost COMPONENTS system filesystem REQUIRED)
## Compiler flags
if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "-O2")
set(CMAKE_EXE_LINKER_FLAGS "-lsqlite3 -lrt -lpthread")
endif()
target_link_libraries(complex
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
#${PROTOBUF_LIBRARY}
)
ENDIF(UNIX)
OriginalL'auteur Ashera | 2012-04-19
Vous devez vous connecter pour publier un commentaire.
La
FindXXX
scripts sont censés définir une variable<Packagename>_FOUND
àTRUE
si le paquet a été trouvé. Donc dans votre cas, il sera mis enBoost_FOUND
si boost a été trouvé.Lors de la compilation de votre
Boost.cxx
, je suppose que vous aurez besoin de Stimuler les en-têtes, de sorte que vous devez ajuster vos répertoires inclus.*look pour le coup de pouce avant la création de votre exécutable. Furhtermore, vous devez définir vos répertoires avant d'ajouter le fichier exécutable.
Afternote: Puisque vous utilisez le
REQUIRED
drapeau lors de la recherche de Boost (puisque vous n'avez besoin sur plate-forme Unix), il est même suffisant pour utiliser les en option-source-fichiers-dans-une-variable truc.(*) Merci pour votre question, je viens de découvrir qu'il n'a pas d'importance si
include_directories(...)
est appelée avant ou après la création de la cible avecADD_EXECUTABLE
ouADD_LIBRARY
depuis les répertoires sont ajoutés à toutes les cibles dans le même projet.Attention - l'Libname_FOUND variable est sensible à la casse et tous les bouchons de certaines bibliothèques. Par exemple. GTest_FOUND ne sera pas réglée, même si find_package(GTest) est réussie. Au lieu de cela, GTEST_FOUND est ensemble (en utilisant cmake 3.0.2).
OriginalL'auteur Johannes S.
Oui, il définit la variable
Boost_FOUND
. Exemple de FindBoost.cmake:OriginalL'auteur KCH
Oui, si le
find_package(Boost COMPONENTS system filesystem REQUIRED)
réussit,Boost_FOUND
sera vrai.Aussi, il y aura de la composante spécifique de versions, de sorte
Boost_date_time_FOUND
,Boost_filesystem_FOUND
, etc.Pour plus d'info, exécutez
OriginalL'auteur Fraser