Cmake 在windows下生成Unix Makefile, 也可以生成Visual Studio sln/vcxproj

需要解决的问题

使用cmake时遇到一个问题:
在unix环境下, cmake默认的generator 是Unix Makefile, build目录下就有产生Makefile.
在windows里用cmake时, 默认使用的是Visual Studio 15 2017. 然后生成的都是些sln, vcxproj.
这就导致我在windows如果使用mingw这种模拟unix环境的工具去build文件下里进行make,就不可能了.
所以希望cmake 能够按照我的要求在windows里生成unix那种makefile, 然后在mingw里用mingw32-make. 或者生成vs的sln和vcxproj, 然后通过msbuild来生成exe文件.

Unix Makefile

一开始不知道cmake还有generator这一说, (以为只有compiler设置), 直到打开cmake gui, 发现还能选generator. 命令行里cmake -G 也可以打印出所有generator.
所以指定makefile generator需要这样写
默认在build目录里

cmake .. -G ""Unix Makefiles"

出来的就是unix里看到的makefile文件了.
之后再make就看到可执行文件了.
如果想省力气默认设置generator, 需要在CMakeLists.txt的同一级创建一个PreLoad.cmake:

set(CMAKE_GENERATOR "Unix Makefiles" CACHE INTERNAL "" FORCE)

在这之后cmake … 就直接是Unix Makefiles 形式了

Visual Studio

其实默认的generator是Visual Studio 15 2017 Win32 (如果装了VS的话)
出来的sln, vcxproj 还得用VS去打开vcxproj, 然后运行. 我有时不想这样, 想直接build, 然后运行exe. 这就需要调用msbuild.
找了半天, 在这里找到对应的prompt的快捷方式, 每个prompt对应cmake时不同的配置, 注意x86/x64和Native/Cross 要选对, 不然用MSBuild.exe xxx.sln 会有问题.
在这里插入图片描述
我就想在MingW 里直接msbuild, 结果找不到命令, MSBuild.exe也不行. 原来是要把
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\bin
加入环境变量里, 然后才能调用MSBuild.exe, 这能应付Win32/Win64 的sln.

如果你不想安装VS 或者没有找到MSBuild

如果你不想安装VS 但是需要MSBuild,
或者你装了Visual Studio, 还是没找到MSBuild
可以参考这篇文章https://developer.valvesoftware.com/wiki/Building_without_Visual_Studio#Step_1:_MSBuild.exe
解决方法就是要装个独立的MSBuild (Build Tools for Visual Studio 2017) 和.NET framework.

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值