私はCMakeを習得しようとしていますが、定義されていない参照があります...リンカーエラー 私はサブディレクトリを持つディレクトリを持っています。それらの各 は独自のCMakeLists.txtを持ってい関数への未定義参照CMake
test
|----main.cpp
|----CMakeLists.txt
|----test2
|----foo.hpp
|----foo.cpp
|----CMakeLists.txt
テストのためのCMakeLists.txtは次のとおりです。
はcmake_minimum_required(VERSION 3.5)
project(tests)
add_subdirectory(test2)
set(SOURCE_FILES main.cpp)
add_executable(tests ${SOURCE_FILES})
TEST2のためのCMakeLists.txtは次のとおりです。
set(test2_files
foo.cpp
foo.hpp
)
add_library(test2 ${test2_files})
foo.cpp
を実装この関数のfoo.hpp
で定義されている関数です。定義されていない参照エラーが発生しています。 私は何が間違っていますか?私はこのリンカエラーを取り除くことができますどのように
EDIT:私のCMakeLists.txtは次のようになりますが、私はまだリンカエラーを取得:
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)
私もtest2
するのではなく、絶対パスでそれを試してみました
EDIT: は、test2のCMakeLists.txtのタイプミスであった。
::、-ltest2' – Exagon
はラインを追加しました見つけることができないトップレベルに現地を与える: 'は/ usr/binに/ LDを
test
ディレクトリのCMakeLists.txtに追加リンクディレクトリの場合 – DaveyLaser* .aまたは* .soにしますか?この実装では、ビルドディレクトリに* .aファイルが生成されます。 – DaveyLaser