0

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

我必须遵循结构

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 ...)

无论如何告诉它打包整个文件夹并链接它?还有一些可能在他们之间有依赖关系

4

2 回答 2

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 ...)收集源文件之类的命令,因为如果将文件添加到目录中,则构建系统将不会重新生成。

于 2012-11-26T11:03:08.067 回答
1

采用

file(GLOB UTIL_SOURCES utils/*.cpp)

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

add_library(UTIL, ${UTIL_SOURCES})
于 2012-11-25T20:44:00.843 回答