Как написать файл cmake, который может запустить тест, зависит от того же уровня lib - PullRequest
1 голос
/ 19 мая 2011

Предположим, что мой проект dirs, как это:

src
|
|---lib1
|    |
|    |--lib1.cpp
|    |--lib1.hpp
|    |--lib1test.cpp
|
|---lib2
|    |
|    |--lib2.cpp
|    |--lib2.hpp
|    |--lib2test.cpp
|
|main.cpp

Сейчас lib1 разработана, а lib2 находится в разработке. Lib2 использует некоторые функции в lib1.Мне нужно сделать несколько тестов для lib2, это означает, что при сборке тестов lib2 под lib2, он должен сначала собрать lib1. Как я могу написать три файла CMakeLists.txt, для которых сборка теста lib2 зависит от уровня dir lib1?

1 Ответ

1 голос
/ 19 мая 2011

Ты не упомянул, твои ли static или dynamicЯ предполагаю, что они оба статичны (но это действительно не имеет значения).Вы должны просто сделать что-то вроде этого:

// core CMakeLists.txt

#...
add_subdirectory(lib1)
add_subdirectory(lib2)

// lib1 CMakeLists.txt

add_library(lib1 lib1.cpp)
target_link_libraries(lib1 ${lib1_deps})

// lib2 CMakeLists.txt

add_library(lib2 lib2.cpp)
add_dependencies(lib2 lib2.cpp) #actually don't need this line
target_link_libraries(lib2 lib1 ${lib2_deps})

add_executable(lib2test lib2test.cpp)
target_link_libraries(lib2test lib2)
...