Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi cmake,如何自动化windows SDK构建?_Winapi_Cmake - Fatal编程技术网

Winapi cmake,如何自动化windows SDK构建?

Winapi cmake,如何自动化windows SDK构建?,winapi,cmake,Winapi,Cmake,我想使用Windows SDK编译器在Windows上使用cmake自动构建项目。我是在linux上开发的,不能交叉编译(我正在构建一个库,它将链接到MatlabMex文件,尽管我认为这个细节没有那么重要) 我可以根据需要使用cmake生成器成功地生成、生成nmake文件或visual studio解决方案文件,但是如何在没有用户交互的情况下构建项目呢 从阅读中可以看出,在构建之前,您必须启动一个特殊的命令提示符来设置环境变量等,是这种情况吗?或者有解决方法吗 从windows上的CMakeLi

我想使用Windows SDK编译器在Windows上使用cmake自动构建项目。我是在linux上开发的,不能交叉编译(我正在构建一个库,它将链接到MatlabMex文件,尽管我认为这个细节没有那么重要)

我可以根据需要使用cmake生成器成功地生成、生成nmake文件或visual studio解决方案文件,但是如何在没有用户交互的情况下构建项目呢

从阅读中可以看出,在构建之前,您必须启动一个特殊的命令提示符来设置环境变量等,是这种情况吗?或者有解决方法吗

从windows上的CMakeLists.txt开始,使用windows SDK,无需任何用户交互,构建cmake项目的步骤是什么


另外请注意,建议使用mingw味道的答案并不是我想要的,我已经知道如何用这种方式。我希望Windows SDK步骤或MSVC++编译器的express版本的步骤也很有趣。

特殊命令提示只需运行批处理文件来设置环境变量。您可以编写一个执行此操作的批处理文件,然后调用
nmake
cmake
msbuild
或其他任何函数。不幸的是,批处理文件的名称和位置根据版本以及您是否拥有SDK或Visual Studio而有所不同。但是,如果您针对的是一台特定的生成计算机,这不是问题。@arx,是的,我大致了解了批处理命令的作用(即设置各种环境变量)。我想知道的是,是否有任何方法可以通过最少的用户交互来实现同样的效果,告诉构建系统批处理文件在哪里或类似的地方。我想针对一个特定的平台(例如Win 7 64位),而不是一个特定的构建机器。如果有帮助的话,你可以假设我知道cl.exe的位置,不管它是否在路径上(Matlab会知道这一点)。没有“cl.exe的位置”这样的东西-在任何给定的系统上都可以安装任何非负数的编译器。设置环境变量将告诉构建系统使用哪一个。特定构建使用的环境由开发人员决定,然后开发人员调用相应的批处理文件。这不是你可以自动完成的。@IInspectable,好吧,澄清一下,我真的在创建一个库,它将链接到一个Matlab mex文件(这是一个链接到其他一些Matlab库的共享库,有点像swig python包装器)。因此,我要求Matlab已设置为使用给定的兼容mex编译器,该编译器在Windows上目前是Windows SDK 7.1。这就是我希望我的用户必须做的。一旦设置好,Matlab就会知道这个编译器的位置,我可以在运行我的自动cmake构建之前提取这些信息。