前言
大部分工作在Linux环境下的C/C++语言的程序员,习惯了使用shell、cmake、make等工具来编译代码,切换到Windows环境后,也想使用类似的方法来做同样的事情。
这部分程序员,大概有如下几个理由:
工具准备
那么,应该怎么做呢?下面我提供一个demo。
需要的工具有:
其实就是安装了Visual Studio的一部分,我的选择项目如下:
写代码
C代码 – main.cpp
#include <stdio.h>
void main(int argc, char *argv[]) {
printf("cmake on windows");
}
cmake代码 – CMakeLists.txt
cmake_minimum_required(VERSION 3.3)
project(cmake_on_win)
add_executable(${PROJECT_NAME} main.cpp)
开始编译、运行 – 我使用的cmd是MINGW
创建编译路径 – build
admin@DESKTOP MINGW64 /e/temp/cmake_on_win
$ mkdir build
admin@DESKTOP MINGW64 /e/temp/cmake_on_win
$ cd build/
cmake
admin@DESKTOP MINGW64 /e/temp/cmake_on_win/build
$ cmake ..
-- Building for: Visual Studio 16 2019
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19043.
-- The C compiler identification is MSVC 19.29.30141.0
-- The CXX compiler identification is MSVC 19.29.30141.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: d:/Program Files/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: d:/Program Files/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: E:/temp/cmake_on_win/build
admin@DESKTOP MINGW64 /e/temp/cmake_on_win/build
$ ls
ALL_BUILD.vcxproj cmake_on_win.vcxproj ZERO_CHECK.vcxproj
ALL_BUILD.vcxproj.filters cmake_on_win.vcxproj.filters ZERO_CHECK.vcxproj.filters
cmake_install.cmake CMakeCache.txt
cmake_on_win.sln CMakeFiles/
MsBuild
admin@DESKTOP MINGW64 /e/temp/cmake_on_win/build
$ MSBuild.exe cmake_on_win.sln
用于 .NET Framework 的 Microsoft (R) 生成引擎版本 16.11.2+f32259642
版权所有(C) Microsoft Corporation。保留所有权利。
在此解决方案中一次生成一个项目。若要启用并行生成,请添加“-m”开关。
生成启动时间为 2022/9/26 18:01:51。
节点 1 上的项目“E:tempcmake_on_winbuildcmake_on_win.sln”(默认目标)。
ValidateSolutionConfiguration:
正在生成解决方案配置“Debug|x64”。
ValidateProjects:
在解决方案配置“Debug|x64”中未选定生成项目“ALL_BUILD”。
项目“E:tempcmake_on_winbuildcmake_on_win.sln”(1)正在节点 1 上生成“E:tempcmake_on_winbuildZERO_CHECK.vcxproj”(2) (默认目标)。
PrepareForBuild:
正在创建目录“x64DebugZERO_CHECK”。
正在创建目录“x64DebugZERO_CHECKZERO_CHECK.tlog”。
InitializeBuildStatus:
正在创建“x64DebugZERO_CHECKZERO_CHECK.tlogunsuccessfulbuild”,因为已指定“AlwaysCreate”。
CustomBuild:
Checking Build System
FinalizeBuildStatus:
正在删除文件“x64DebugZERO_CHECKZERO_CHECK.tlogunsuccessfulbuild”。
正在对“x64DebugZERO_CHECKZERO_CHECK.tlogZERO_CHECK.lastbuildstate”执行 Touch 任务。
已完成生成项目“E:tempcmake_on_winbuildZERO_CHECK.vcxproj”(默认目标)的操作。
项目“E:tempcmake_on_winbuildcmake_on_win.sln”(1)正在节点 1 上生成“E:tempcmake_on_winbuildcmake_on_win.vcxproj.metaproj”(3) (默认目标)。
项目“E:tempcmake_on_winbuildcmake_on_win.vcxproj.metaproj”(3)正在节点 1 上生成“E:tempcmake_on_winbuildcmake_on_win.vcxproj”(4) (默认目标)。
PrepareForBuild:
正在创建目录“cmake_on_win.dirDebug”。
正在创建目录“E:tempcmake_on_winbuildDebug”。
正在创建目录“cmake_on_win.dirDebugcmake_on_win.tlog”。
InitializeBuildStatus:
正在创建“cmake_on_win.dirDebugcmake_on_win.tlogunsuccessfulbuild”,因为已指定“AlwaysCreate”。
CustomBuild:
Building Custom Rule E:/temp/cmake_on_win/CMakeLists.txt
ClCompile:
D:Program FilesMicrosoft Visual Studio2019BuildToolsVCToolsMSVC14.29.30133binHostX64x64CL.exe /c /Zi /nologo /W3 /WX- /diagnostics:column /Od /Ob0 /D WIN32 /D _WINDOWS /D "CMAKE_INTDIR="Debug"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"cmake_on_win.dirDebug\" /Fd"cmake_on_win.dirDebugvc142.pdb" /external:W3 /Gd /TP /errorReport:queue E:tempcmake_on_winmain.cpp
main.cpp
Link:
D:Program FilesMicrosoft Visual Studio2019BuildToolsVCToolsMSVC14.29.30133binHostX64x64link.exe /ERRORREPORT:QUEUE /OUT:"E:tempcmake_on_winbuildDebugcmake_on_win.exe" /INCREMENTAL /ILK:"cmake_on_win.dirDebugcmake_on_win.ilk" /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"E:/temp/cmake_on_win/build/Debug/cmake_on_win.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"E:/temp/cmake_on_win/build/Debug/cmake_on_win.lib" /MACHINE:X64 /machine:x64 cmake_on_win.dirDebugmain.obj
cmake_on_win.vcxproj -> E:tempcmake_on_winbuildDebugcmake_on_win.exe
FinalizeBuildStatus:
正在删除文件“cmake_on_win.dirDebugcmake_on_win.tlogunsuccessfulbuild”。
正在对“cmake_on_win.dirDebugcmake_on_win.tlogcmake_on_win.lastbuildstate”执行 Touch 任务。
已完成生成项目“E:tempcmake_on_winbuildcmake_on_win.vcxproj”(默认目标)的操作。
已完成生成项目“E:tempcmake_on_winbuildcmake_on_win.vcxproj.metaproj”(默认目标)的操作。
已完成生成项目“E:tempcmake_on_winbuildcmake_on_win.sln”(默认目标)的操作。
已成功生成。
0 个警告
0 个错误
已用时间 00:00:01.84
admin@DESKTOP MINGW64 /e/temp/cmake_on_win/build
$ ls
ALL_BUILD.vcxproj cmake_on_win.vcxproj x64/
ALL_BUILD.vcxproj.filters cmake_on_win.vcxproj.filters ZERO_CHECK.vcxproj
cmake_install.cmake CMakeCache.txt ZERO_CHECK.vcxproj.filters
cmake_on_win.dir/ CMakeFiles/
cmake_on_win.sln Debug/
admin@DESKTOP MINGW64 /e/temp/cmake_on_win/build
$ ls Debug/
cmake_on_win.exe* cmake_on_win.pdb
运行
admin@DESKTOP MINGW64 /e/temp/cmake_on_win/build
$ Debug/cmake_on_win.exe
cmake on windows
原文地址:https://blog.csdn.net/lichaofan2008/article/details/127058253
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_35538.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。