gpt4 book ai didi

c++ - cmake,我可以从可执行对象构建一个库吗

转载 作者:太空宇宙 更新时间:2023-11-04 13:36:00 24 4
gpt4 key购买 nike

我有一个用 cmake 构建的 C++ 项目。

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 做到这一点吗?

最佳答案

序言:您无法链接到可执行文件,因此您必须更改构建内容的方式。

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

建议的解决方案:

  • 只需将您的 foobar 库设为静态库 add_library(foobar STATIC foo.cpp bar.cpp) 并保留您一开始提出的代码。
  • 或者,看看 sakra 提案 ( object libraries ),这很好。

关于c++ - cmake,我可以从可执行对象构建一个库吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29589851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com