c++ - CMake:如何指定自定义导入库名称(MSVC)

标签 c++ visual-c++ cmake

我生成了一个名为 mylib80.dll 的共享库(它有 后缀“80”,因为我想将版本信息嵌入到库名称中。

我使用 set_target_properties 和 _POSTFIX 属性来实现 这。默认情况下,CMake 将相应的导入库命名为 mylib80.lib。但我希望我的共享库有一个名为 mylib.lib(名称中没有嵌入版本)。

是否可以在 全部?我尝试了 IMPORT_SUFFIX,但它似乎没有像我预期的那样工作。

我使用 MSVC,对于 GCC 和其他编译器我不需要这个。

如有任何帮助,我们将不胜感激。

最佳答案

使用以下 CMake 目标属性为 *.lib 和 *.dll 文件指定单独的名称,而不是使用 _POSTFIX 属性:

http://cmake.org/cmake/help/cmake-2-8-docs.html#prop_tgt:ARCHIVE_OUTPUT_NAME http://cmake.org/cmake/help/cmake-2-8-docs.html#prop_tgt:LIBRARY_OUTPUT_NAME http://cmake.org/cmake/help/cmake-2-8-docs.html#prop_tgt:RUNTIME_OUTPUT_NAME

RUNTIME_OUTPUT_NAME属性对应dll文件的名字,另外一个(我总是忘记是哪个。。。)对应lib文件的名字。

如果 lib 已经在没有 _POSTFIX 的情况下正确命名,则只需使用 RUNTIME_OUTPUT_NAME 属性重命名 dll 文件即可。

关于c++ - CMake:如何指定自定义导入库名称(MSVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7792153/

相关文章:

c++ - 在 Windows 上强制刷新 ofstream 文件

winapi - MFCreateAudioRenderer所需的带有Guid 1082E6C2-7660-4945-8E78-228A3B3329F6的怪异属性

msbuild - 我真的需要 cmake 来构建自动化吗?

cmake - 从 llvm 源目录中使用 cmake 开发 llvm pass

c++ - 将 char 转换为 int 然后再转换为 string 会导致崩溃

c++ - 模板函数调用被函数混淆,在模板之前声明了错误的签名

c++ - 链接器错误 : unresolved external symbol _WinMain@16 when building console application

c++ - 返回 CArray 的问题

ruby-on-rails - 使用 native 扩展构建二进制文件 - Ruby/Rails

C++:在结构定义问题中指向结构的指针