【发布时间】:2018-09-15 06:29:14
【问题描述】:
我想为类似于此处提到的库实施一种命名方案:Library name for x32 vs x64
设置 CMakeLists.txt 文件以创建静态库
add_library(test test.h test.cpp)
从 cmake 列表创建 Visual Studio 解决方案后,项目设置为调试库 test.lib 写入/x64/Debug/test.lib,发布版本写入/x64/Release/test.lib。我更愿意将它们都写到/lib/,但在调试版本中附加一个“d”。这个想法是得到
/lib/test.lib
/lib/testd.lib
如果可能的话,为 64 位构建添加一个额外的后缀
/lib/test.lib
/lib/test64.lib
/lib/testd.lib
/lib/test64d.lib
有没有直接的方法来做到这一点?
编辑: 这可以在项目中很好地使用,如下所示: Linking different libraries for Debug and Release builds in Cmake on windows?
编辑:我在从输出中删除 Debug 和 Release 文件夹时遇到问题,可以通过以下答案修复:How to not add Release or Debug to output path?
【问题讨论】:
-
我实际上并没有使用过这些,但我认为
CMAKE_STATIC_LIBRARY_PREFIX和CMAKE_STATIC_LIBRARY_SUFFIX是为此目的而设计的。 -
@MariusBancila 这是在 Windows 上用于静态库文件名 .lib 结尾的后缀。我不确定它是否打算更改为 d.lib。
-
请记住,对于任何想要使用您的库的人来说,这会立即引入更多工作。您的图书馆的用户必须处理您添加到图书馆名称的所有前缀和后缀意大利面条。即使对于单个库来说,这也是一件很痛苦的事情,更不用说如果你必须处理好几个了。始终尝试提供一个自动完成工作的抽象层(例如
FindTest.cmake在您的情况下)。
标签: c++ visual-studio cmake