链接整个文件夹

时间:2012-11-25 18:36:08

标签: c++ cmake

如何将整个文件夹链接到库中?

我必须遵循结构

src/main.cpp
src/alg/alg1.cpp
src/alg/alg1.hpp
src/alg/alg2.cpp
src/alg/ ...
src/utils/something.cpp
src/utils/...

我可以使用

add_library(ALG1 alg/alg1.cpp)
add_library(ALG2 .... )
......
add_library(UTIL1 utils/something.cpp)

add_executable(PROG main.cpp)

target_link_libraries(PROG ALG1 ALG2 ... UTIL1 UTIL2 ...)

无论如何告诉它打包整个文件夹并链接它? 还有一些移民在他们之间有代表

2 个答案:

答案 0 :(得分:2)

以下是否符合您的需求?

add_library(ALG alg/alg1.cpp alg/alg1.hpp alg/alg2.cpp #... list all files)

add_library(UTIL utils/something.cpp #... list all files)

add_executable(PROG main.cpp)

target_link_libraries(PROG ALG UTIL)

请注意,建议不要使用file(GLOB ...)之类的命令来收集源文件,因为如果将文件添加到目录中,构建系统将不会重新生成。

答案 1 :(得分:1)

使用

file(GLOB UTIL_SOURCES utils/*.cpp)

要获取目录中的所有源文件,只需执行

add_library(UTIL, ${UTIL_SOURCES})