如何使用cmake生成.dll文件?

4

我正在尝试使用cmake生成带有源文件的dll文件,它显示已配置完成和已生成完成。但是.dll.lib文件没有生成。请提供解决此问题的方法。

我的根目录中的cmake配置如下:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

PROJECT(mydll C)

INCLUDE_DIRECTORIES(../common/include) 

ADD_SUBDIRECTORY(mydll bin)

cmake configuration in mydll directory is :

SET(my_lib_src dllmain.cpp mydll.cpp funcs.def)

ADD_LIBRARY(mydll  SHARED ${my_lib_src})

SET_TARGET_PROPERTIES(mydll PROPERTIES LINKER_LANGUAGE C)

1
你在生成后编译了项目吗? - Pierre Fourgeaud
不,我在生成后没有编译解决方案。 - 123r789
1
那就是问题所在。使用CMake生成解决方案,但不会编译它。当你编译解决方案后,你就会得到你的文件。 - Pierre Fourgeaud
在CMakeLists.txt文件中是否有任何选项可以设置以使用cmake进行编译并生成动态链接库(DLL)? - 123r789
编译解决方案后,我遇到了错误 LNK2001: 未解析的外部符号 __DllMainCRTStartup@12。我在 CMakeLists.txt 中犯了什么错误吗? - 123r789
我认为这是另一个问题。 - Pierre Fourgeaud
1个回答

2

我将以回复的形式,而非评论的形式给出翻译。

您在这里的问题是您没有编译您的解决方案,您只是在生成它...

看起来您可以使用命令行构建您的项目:

cmake --build <dir> [options] [-- [native-options]]

    <dir>          = Project binary directory to be built.
    --target <tgt> = Build <tgt> instead of default targets.
    --config <cfg> = For multi-configuration tools, choose <cfg>.
    --clean-first  = Build target 'clean' first, then build.
                     (To clean only, use --target 'clean'.)
    --use-stderr   =  Don't merge stdout/stderr.
    --             = Pass remaining options to the native tool

但是我没有尝试过它...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接