小编The*_*nia的帖子

使用cmake构建Windows DLL的简单示例

几年前,我背负着建立和修改位于NorthEast(也许是"Down East")的合作伙伴工程机构的庞大包裹的困扰.这个包是用一种叫"cmake的"使用Linux作为目标...... cmake的建立,恕我直言,最令人惊讶的郁闷,记录不完整,结构奇特的构建系统我曾经有给我的能力有限,工作的不满(28岁*NIX系统的专业经验和构建开源代码).

然后我不得不用"cmake"建立另一个针对MSVS的项目.哦,快乐!最后SOMETHING可以可靠地生成那些讨厌的"项目"和"解决方案"文件.那些相同的CMakeLists.txt文件可以重新定位Linux!哇,我已经看到了光明.

不过,我现在仍然很黑.除非我开始使用CMakeLists.txt文件,否则我似乎无法从头开始,并在该过程中花费不到一天的时间来解决最简单的问题.

我有一个任务是使用MSVS构建一个DLL,可以使用ctypes从Python脚本访问它.基本上,这意味着一个在板上有符号的DLL.由于我有一个10年前的错误,我的VS 2008和VS 2010的安装无法创建一个新的C++项目,我想我会选择用cmake生成DLL解决方案.

我还没有找到一个现代的(又名post cmake 2.8.5)完整的用cmake构建DLL的例子,这个任务应该比过去好得多.

潜入教程http://www.cmake.org/cmake/help/cmake_tutorial.html这很糟糕,因为他们希望你在学习cmake的同时编写C++代码.(嘿,伙计!我有足够的麻烦让cmake工作,让make代码将编译!)本教程虽然构建一个简单的二进制文件,然后使用库创建一个二进制文件,但它不会生成DLL.

在行之间阅读http://www.cmake.org/Wiki/BuildingWinDLL,我天真地将一些代码添加到lib目录中的CMakeLists.txt文件中:

之前:

add_library(MathFunctions mysqrt.cxx)

install (TARGETS MathFunctions DESTINATION bin)
install (FILES MathFunctions.h DESTINATION include)
Run Code Online (Sandbox Code Playgroud)

后:

add_library(MathFunctions SHARED mysqrt.cxx)
GENERATE_EXPORT_HEADER( MathFunctions
             BASE_NAME MathFunctions
             EXPORT_MACRO_NAME MathFunctions_EXPORT
             EXPORT_FILE_NAME MathFunctions_Export.h
             STATIC_DEFINE MathFunctions_BUILT_AS_STATIC
)
install (TARGETS MathFunctions DESTINATION bin)
install (FILES MathFunctions.h DESTINATION include)
Run Code Online (Sandbox Code Playgroud)

cmake 3.0.0和cmake 2.8.12.2这两个文件的winge:

CMake Error at MathFunctions/CMakeLists.txt:2 (GENERATE_EXPORT_HEADER):
  Unknown CMake command "GENERATE_EXPORT_HEADER".
Run Code Online (Sandbox Code Playgroud)

该函数似乎在cmake安装中作为GenerateExportHeader.cmake,并且没有任何调试显示此错误的"原因".我无法在互联网上找到此错误.

那是我一天中的前六个小时.

我终于决定删除有问题的命令并试试这个:

add_library(MathFunctions mysqrt.cxx)

install (TARGETS MathFunctions DESTINATION bin)
install (FILES MathFunctions.h …
Run Code Online (Sandbox Code Playgroud)

c++ python dll cmake visual-studio-2010

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

cmake ×1

dll ×1

python ×1

visual-studio-2010 ×1