【发布时间】:2019-12-02 21:30:08
【问题描述】:
我正在使用 CMake 为 MSVC 构建一个项目。
我只有一个 .def 文件,其中包含从 dll 库中导出的函数。我的项目无权访问 dll 或源代码。而且我需要一个导入库来消除未解决的外部问题。我正在为其构建项目的 SDK 仅使用头文件和导入库。但是有些库没有构建,所以我必须在没有源代码或 DLL 库的情况下单独构建它们(它们与产品一起打包,而不是 SDK)。
我可以使用以下命令构建一个导入库,我将它用作 VS 项目中的预链接事件:
lib /def:<def path> /OUT:<lib name> /MACHINE:<machine type>
CMake 也有办法吗? 我试过这样的命令:
add_library(Ilib STATIC empty.cpp expfile.def)
add_library(Ilib SHARED empty.cpp expfile.def)
add_library(Ilib STATIC expfile.def)
set_target_properties(Ilib PROPERTIES LINKER_LANGUAGE CXX)
但它们都不起作用。
我认为,唯一的解决方案是创建一个execute_process 或add_custom_command 命令。
【问题讨论】:
-
你看到this question的这个答案了吗?这些似乎专注于出口,但可能会有所帮助。另外,还有一篇文章的链接here。
-
谢谢小猫们,我都读过它们,它们专注于从构建的 .dll 或 tagets 生成 .def 文件。但我见过
add_custom_command。在最坏的情况下,我可以将预链接事件放入生成的项目中。
标签: visual-c++ dll cmake import-libraries