cmake,我可以从可执行对象构建库吗 我有一个C++/P>的C++项目构建 add_executable(app foo.cpp bar.cpp main.cpp)
我想在测试项目中使用cmake,我可以从可执行对象构建库吗 我有一个C++/P>的C++项目构建 add_executable(app foo.cpp bar.cpp main.cpp),c++,cmake,static-linking,C++,Cmake,Static Linking,我想在测试项目中使用foo.cpp和bar.cpp 我知道我可以建立一个库,然后将它链接到两个项目中: 比如: 但是我不希望更改应用程序构建系统,并针对对象foo.o和bar.o链接test 你知道我如何用cmake做到这一点吗?序言:你不能链接到一个可执行文件,所以你必须改变你构建东西的方式 评论中提出的一些解决方案是有风险的。不要直接链接到对象文件,当您更改任何内容时,在尝试查找对象文件的最终位置时,您会非常痛苦。cmake旨在简化这类事情,一般建议是为您的项目使用正确的体系结构 提议的解决
foo.cpp
和bar.cpp
我知道我可以建立一个库,然后将它链接到两个项目中:
比如:
但是我不希望更改应用程序构建系统,并针对对象foo.o
和bar.o
链接test
你知道我如何用cmake做到这一点吗?序言:你不能链接到一个可执行文件,所以你必须改变你构建东西的方式 评论中提出的一些解决方案是有风险的。不要直接链接到对象文件,当您更改任何内容时,在尝试查找对象文件的最终位置时,您会非常痛苦。cmake旨在简化这类事情,一般建议是为您的项目使用正确的体系结构 提议的解决办法:
- 只需将您的foobar库设置为静态库
,并保留您在开始时提出的代码add_库(foobar static foo.cpp bar.cpp)
- 或者,看看sakra提案(),这很好李>
add_库(foobar static foo.cpp bar.cpp)
,并保留您在开始时提出的代码。不要直接链接到对象文件,当您更改任何内容时,您将非常痛苦地试图找到对象文件的最终位置,cmake旨在简化这类事情,为您的项目使用正确的体系结构!看看sakra的提议,这很好。
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)