Как написать CMakeLists.txt для создания исходного кода и его примера кода? - PullRequest
0 голосов
/ 28 февраля 2020

Существует несколько исходных кодов C ++, которые не используют CMake в качестве системы сборки. Предположим, у меня есть такая файловая структура:

ProjectRepoDir
  |- include
     |- liba.h
     |- module1.h
  |- src
     |- main.cpp
     |- liba.cpp
     |- module1.cpp
  |- samples
     |- example1-dir
        |- main.cpp
     |- example2-dir
        |- main.cpp

Могу ли я создать CMakeLists.txt под ProjectRepoDir, и в каталоге я делаю эти команды для создания исходного кода и всех каталогов примеров? Причина в том, что я не хочу писать CMakeLists.txt в каждом каталоге примеров.

mkdir build && cd build
cmake ..
make

1 Ответ

2 голосов
/ 28 февраля 2020

Конечно, вы можете делать все из CMakeLists.txt верхнего уровня:

# Extract the common parts in a (internal) static library
add_library(liba STATIC src/liba.cpp src/module1.cpp)
target_include_directories(liba PUBLIC include)

add_executable(my-project src/main.cpp)
target_link_libraries(my-project liba)

# Add a `samples` target that enables building the sample programs
# Not built by default.
add_executable(sample1 EXCLUDE_FROM_ALL samples/example1-dir/main.cpp)
target_link_libraries(sample1 liba)

add_executable(sample2 EXCLUDE_FROM_ALL samples/example2-dir/main.cpp)
target_link_libraries(sample2 liba)

add_custom_target(samples DEPENDS sample1 sample2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...