【发布时间】:2020-08-03 18:20:49
【问题描述】:
我想使用 FetchContent 将我的 Debug 可执行文件与 Release 版本中内置的外部库链接起来。 我可以使用以下方法将我的 Debug 可执行文件与 Debug 构建库和 Release 和 Release 类似:
project(CMakeDemo)
set(FETCHCONTENT_QUIET OFF)
FetchContent_Declare(
ZLIB
URL https://zlib.net/zlib-1.2.11.tar.gz
)
FetchContent_MakeAvailable(ZLIB)
add_executable(CMakeDemo main.cpp)
target_link_libraries(CMakeDemo ZLIB)
所以当我从 Windows 上的构建目录执行时:
cmake ../
cmake --build .
然后 zlib 和我的可执行文件在 Debug 版本中构建,我的可执行文件与该 zlib Debug 版本链接。
但是如何增强 CMake 以在 Debug 版本中构建我的可执行文件,但在 Release 版本中构建 zlib 并将我的 Debug 可执行文件与 zlib Release 版本链接? 如何使用 FetchContent_Declare 实现这一目标?
(我相信这必须是一些常见的方法,因为例如当有人想在项目中使用 Google 测试框架或 zlib 时,他肯定想始终在发布版本中使用这些外部库)
【问题讨论】:
-
如果这是与 Visual Studio 一起使用的,则不应混合调试和发布。 Debug 有自己的堆,与 release 不兼容。 debug和release在标准库的实现上也有区别。
-
cmake --build . --config Release如果您不使用 Visual Studio,这可能是一个开始。