2015-04-12 40 views
1

我有一个C++项目与cmake构建。cmake,我可以从一个可执行对象构建一个库

add_executable(app foo.cpp bar.cpp main.cpp) 

而且我想在测试项目中使用foo.cppbar.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.obar.o

你知道我可以用cmake做到吗?

+0

标题的意思是说“cmake”? – Carcigenicate

+0

oops,thx,固定! – overlii

+1

您可以再次为“测试”构建.cpp文件。比试图重用目标文件更加干净。 –

回答

0

序言:你不能链接到一个可执行文件,所以你必须改变你创建东西的方式。

评论中提出的一些解决方案是有风险的。不要直接链接到目标文件,当你改变任何东西时,你最终会遇到很多痛苦,试图找到你的目标文件的最终位置,cmake是为了简化这种事情,一般的建议是为您的项目使用正确的体系结构。

提出的解决方案:

  • 只是让你foobar的库静态库add_library(foobar STATIC foo.cpp bar.cpp),让你在一开始提出的代码。
  • 或者,看看sakra提案(object libraries),这很好。
相关问题