CMake ne peut pas résoudre runtime chemin d'accès au répertoire
Après l'exécution de cmake CMakeLists.txt
Je reçois le message d'avertissement suivant
CMake Warning at src/CMakeLists.txt:32 (add_executable):
Cannot generate a safe runtime search path for target MMPEditor because
files in some directories may conflict with libraries in implicit
directories:
runtime library [libQt5Widgets.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/ch/Qt/5.2.1/gcc_64/lib
runtime library [libQt5Core.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/ch/Qt/5.2.1/gcc_64/lib
runtime library [libQt5Gui.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/ch/Qt/5.2.1/gcc_64/lib
runtime library [libQt5OpenGL.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/ch/Qt/5.2.1/gcc_64/lib
Certaines de ces bibliothèques ne peuvent pas être trouvés correctement.
Que signifie, pour un fichier caché par un autre et comment puis-je permettre à CMake pour déterminer qui est le dossier de droite à lier?
- C'est un avertissement, pas d'erreur.
Vous devez vous connecter pour publier un commentaire.
Les bibliothèques de votre système entre en conflit avec votre coutume locale construire des bibliothèques Qt. Ses un avertissement, mais vous ne pourriez pas obtenir les résultats escomptés dans votre application à cause de cela. Vous devez dire à CMake qu'il devrait l'exclure de chemin d'accès lors de la recherche pour les bibliothèques dans votre CMakeModule. De cette documentation
Également dans la même documentation, un de plus le drapeau est mentionné
NO_CMAKE_SYSTEM_PATH
qui n'incluent plate-forme spécifique chemins d'accès par défaut.Si vous avez affaire à
find_library
find_library(LIBRARY_NAME PATHS "/usr/lib/x86_64-linux-gnu" NO_DEFAULT_PATH)
oùPATHS
représente le chemin exact pour les libsNO_DEFAULT_PATH
signifie, que cmake ne recherche pas n'importe où ailleursvérifier les valeurs de lib et chemins à inclure avec
message(status, ${LIBRARY_NAME})
Si vous avez affaire à
find_package
:C'est un peu plus compliquée que la précédente, mais c'est essentiellement le même.
Pour chaque package, vous devez exécuter
find_package
pour:Créer un fichier avec le nom
Find<Packagename>.cmake
, e. g. si vous êtes à la recherche pour cppunit, vous aurez à créerFindCPPUNIT.cmake
.Dans ce fichier, vous devrez exécuter
find_path
sur inclure des fichiers et desfind_library
sur les fichiers lib, comme dans "Si vous faites affaire avecfind_library
".Et puis vous devez ajouter le chemin du fichier à
CMAKE_MODULE_PATH
.