Ich versuche, CMake zu lernen, aber ich bekomme einen undefinierten Verweis auf ... Linker Fehler Ich habe ein Verzeichnis mit einem Unterverzeichnis. jeder von ihnen hat seine eigene CMakeLists.txtundefined Verweis auf Funktion CMake
test
|----main.cpp
|----CMakeLists.txt
|----test2
|----foo.hpp
|----foo.cpp
|----CMakeLists.txt
die CMakeLists.txt für Test:
cmake_minimum_required(VERSION 3.5)
project(tests)
add_subdirectory(test2)
set(SOURCE_FILES main.cpp)
add_executable(tests ${SOURCE_FILES})
die CMakeLists.txt für test2 ist:
set(test2_files
foo.cpp
foo.hpp
)
add_library(test2 ${test2_files})
foo.cpp
implementiert ein Funktion, die in foo.hpp
für diese Funktion definiert ist, bekomme ich den undefinierten Referenzfehler. Was mache ich falsch? Wie kann ich diesen Linkers Fehler
EDIT los: Mein CMakeLists.txt sieht nun so aus, aber ich habe noch die Linker Fehler:
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)
Ich versuchte es auch mit dem absoluten Pfad statt test2
EDIT: löste es war nur ein Tippfehler in der CMakeLists.txt von test2.
Wenn ich das benutze ich diese Störung erhalten: '/ usr/ist/ld: nicht -ltest2' – Exagon
Added eine Linie finden kann, geben Sie die oberste Ebene einen lokalen für Linkverzeichnisse. – DaveyLaser
Möchten Sie, dass es * .a oder * .so ist? Diese Implementierung generiert eine * .a-Datei im Build-Verzeichnis. – DaveyLaser