本文介绍: 大部分工作在Linux环境下的C/C++语言程序员,习惯了使用shellcmakemake工具编译代码切换到Windows环境后,也想使用类似的方法来做同样的事情。

前言

大部分工作在Linux环境下的C/C++语言程序员,习惯了使用shellcmakemake工具编译代码切换到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

demo比较简单,希望给大家起到了抛砖引玉的效果,谢谢!

原文地址:https://blog.csdn.net/lichaofan2008/article/details/127058253

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_35538.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注