我有一个cmake的c ++项目构建。
add_executable(app foo.cpp bar.cpp main.cpp)
我想在测试项目中使用foo.cpp
和bar.cpp
。
我知道我可以构建一个库然后在两个项目中链接它: 像:
add_library(foobar foo.cpp bar.cpp)
add_executable(app main.cpp)
target_link_library(app foobar)
add_executable(test test.cpp)
target_link_library(test foobar)
但我不想更改应用构建系统并将test
与对象foo.o
和bar.o
相关联。
你知道我怎么能用cmake做到这一点吗?
答案 0 :(得分:0)
序言:您无法链接到可执行文件,因此您必须以构建内容的方式更改某些内容。
评论中提出的一些解决方案存在风险。不要直接链接到目标文件,当你改变任何东西时,你最终会试图找到目标文件的最终位置,cmake是为了简化这类事情,一般建议是为您的项目使用正确的架构。
提议的解决方案:
add_library(foobar STATIC foo.cpp bar.cpp)
,并保留您在开头提出的代码。