Undefined reference to fonction de CMake
Je suis en train d'apprendre CMake, mais j'obtiens un undefined reference to ... erreur de l'éditeur de liens
J'ai un répertoire avec un sous-répertoire.
chacun d'eux a sa propre CMakeLists.txt
test
|----main.cpp
|----CMakeLists.txt
|----test2
|----foo.hpp
|----foo.cpp
|----CMakeLists.txt
l'CMakeLists.txt pour le test est:
cmake_minimum_required(VERSION 3.5)
project(tests)
add_subdirectory(test2)
set(SOURCE_FILES main.cpp)
add_executable(tests ${SOURCE_FILES})
l'CMakeLists.txt pour test2 est:
set(test2_files
foo.cpp
foo.hpp
)
add_library(test2 ${test2_files})
foo.cpp
implémente une fonction qui est définie dans foo.hpp
pour cette fonction, je suis non défini erreur de référence.
Ce que je fais mal? Comment puis-je me débarrasser de cette erreur liens
EDIT: Ma CMakeLists.txt ressemble maintenant à ceci, mais j'ai toujours l'erreur liens:
project(tests)
cmake_minimum_required(VERSION 2.8)
set(SOURCE_FILES main.cpp)
include_directories(test2)
link_directories(test2)
add_subdirectory(test)
add_executable( ${PROJECT_NAME} ${SOURCE_FILES} )
target_link_libraries(${PROJECT_NAME} test2)
J'ai aussi essayé avec le chemin d'accès absolu au lieu de test2
EDIT:
résolu c'était seulement une faute de frappe dans le CMakeLists.txt de test2.
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que votre test
CMakeLists.txt
liens à la création de la bibliothèque./usr/bin/ld: cannot find -ltest2
Fonction
add_subdirectory($dir)
ne pas ajouter automatiquement$dir
inclure des répertoires et annuaires de liens. Pour utiliser la bibliothèquetest2
vous devez le faire manuellement dans CMakeLists.txt detest
répertoire:Ensuite, le lien de votre exécutable avec
test2
bibliothèque pour obtenir des définitions de fonctions. Ajouter à CMakeLists.txt detest
répertoire: