zoukankan      html  css  js  c++  java
  • 【C++】cmake初次编译-HelloWorld

    转自:

    cmake介绍
    cmake是一个构建C++代码的跨平台工具,他能够干什么呢?他能够搜索你的平台环境,然后生成平台上用于Build的文件。在Windows上安装了Visual Studio, 他能够帮你生成.sln, .vcxproj文件。如果在Linux上,能够帮你生成makefile。在MAC OS上,帮你生成xcode的项目文件。利用这些文件你就可以在本地编译,链接文件。生成这些项目,solution文件的输入信息,就是一套自己编写的和平台无关的配置文件。一般使用CMakeLists.txt文件。

    cmake在Windows上的安装
    https://cmake.org/download/ 上下载Windows安装包,安装就可以了。

    cmake的简单实用
    编写C++文件
    首先需要一个简单的Hello World程序。
    HelloWorld.cpp

    #include <iostream>

    using namespace std;

    int main() {
    cout<<"Hello World"<<endl;
    return 0;
    }
     
    然后需要一个CMakeLists.txt
    在cpp文件相同的目录下(项目cpp源文件根目录)建立一个CMakeLists.txt文件。

    cmake_minimum_required (VERSION 2.6)
    project (HelloWorld)
    add_executable (HelloWorld HelloWorld.cpp)
     
    运行cmake
    到CMakeLists.txt文件所在目录,运行cmake。

    E:ReSimStudiocmakedemo>cmake .
    -- Building for: Visual Studio 14 2015
    -- The C compiler identification is MSVC 19.0.24215.1
    -- The CXX compiler identification is MSVC 19.0.24215.1
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/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 (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Configuring done
    -- Generating done
    -- Build files have been written to: E:/ReSimStudio/cmakedemo

    E:ReSimStudiocmakedemo>msbuild ALL_BUILD.vcxproj
    Microsoft (R) 生成引擎版本 14.0.25420.1
    版权所有(C) Microsoft Corporation。保留所有权利。

    生成启动时间为 2020/7/2 10:16:26。
    节点 1 上的项目“E:ReSimStudiocmakedemoALL_BUILD.vcxproj”(默认目标)。
    项目“E:ReSimStudiocmakedemoALL_BUILD.vcxproj”(1)正在节点 1 上生成“E:ReSimStudiocmakedemoERO_CHECK.vcxpro
    j”(2) (默认目标
    )。
    PrepareForBuild:
    正在创建目录“Win32DebugERO_CHECK”。
    正在创建目录“E:ReSimStudiocmakedemoDebug”。
    正在创建目录“Win32DebugERO_CHECKERO_CHECK.tlog”。
    InitializeBuildStatus:
    正在创建“Win32DebugERO_CHECKERO_CHECK.tlogunsuccessfulbuild”,因为已指定“AlwaysCreate”。
    CustomBuild:
    Checking Build System
    FinalizeBuildStatus:
    正在删除文件“Win32DebugERO_CHECKERO_CHECK.tlogunsuccessfulbuild”。
    正在对“Win32DebugERO_CHECKERO_CHECK.tlogERO_CHECK.lastbuildstate”执行 Touch 任务。
    已完成生成项目“E:ReSimStudiocmakedemoERO_CHECK.vcxproj”(默认目标)的操作。

    项目“E:ReSimStudiocmakedemoALL_BUILD.vcxproj”(1)正在节点 1 上生成“E:ReSimStudiocmakedemoHelloWorld.vcxpro
    j”(3) (默认目标
    )。
    PrepareForBuild:
    正在创建目录“HelloWorld.dirDebug”。
    正在创建目录“HelloWorld.dirDebugHelloWorld.tlog”。
    InitializeBuildStatus:
    正在创建“HelloWorld.dirDebugHelloWorld.tlogunsuccessfulbuild”,因为已指定“AlwaysCreate”。
    CustomBuild:
    Building Custom Rule E:/ReSimStudio/cmakedemo/CMakeLists.txt
    ClCompile:
    D:Program Files (x86)Microsoft Visual Studio 14.0VCinCL.exe /c /Zi /nologo /W1 /WX- /Od /Ob0 /Oy- /D WIN3
    2 /D _WINDOWS /D "CMAKE_INTDIR="Debug"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forSco
    pe /Zc:inline /GR /Fo"HelloWorld.dirDebug\" /Fd"HelloWorld.dirDebugvc140.pdb" /Gd /TP /analyze- /errorRepor
    t:queue E:ReSimStudiocmakedemoHelloWorld.cpp
    HelloWorld.cpp
    Link:
    D:Program Files (x86)Microsoft Visual Studio 14.0VCinlink.exe /ERRORREPORT:QUEUE /OUT:"E:ReSimStudiocma
    kedemoDebugHelloWorld.exe" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ol
    e32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='fal
    se'" /manifest:embed /DEBUG /PDB:"E:/ReSimStudio/cmakedemo/Debug/HelloWorld.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /D
    YNAMICBASE /NXCOMPAT /IMPLIB:"E:/ReSimStudio/cmakedemo/Debug/HelloWorld.lib" /MACHINE:X86 /SAFESEH /machine:X8
    6 HelloWorld.dirDebugHelloWorld.obj
    HelloWorld.vcxproj -> E:ReSimStudiocmakedemoDebugHelloWorld.exe
    HelloWorld.vcxproj -> E:/ReSimStudio/cmakedemo/Debug/HelloWorld.pdb (Full PDB)
    FinalizeBuildStatus:
    正在删除文件“HelloWorld.dirDebugHelloWorld.tlogunsuccessfulbuild”。
    正在对“HelloWorld.dirDebugHelloWorld.tlogHelloWorld.lastbuildstate”执行 Touch 任务。
    已完成生成项目“E:ReSimStudiocmakedemoHelloWorld.vcxproj”(默认目标)的操作。

    PrepareForBuild:
    正在创建目录“Win32DebugALL_BUILD”。
    正在创建目录“Win32DebugALL_BUILDALL_BUILD.tlog”。
    InitializeBuildStatus:
    正在创建“Win32DebugALL_BUILDALL_BUILD.tlogunsuccessfulbuild”,因为已指定“AlwaysCreate”。
    CustomBuild:
    Building Custom Rule E:/ReSimStudio/cmakedemo/CMakeLists.txt
    FinalizeBuildStatus:
    正在删除文件“Win32DebugALL_BUILDALL_BUILD.tlogunsuccessfulbuild”。
    正在对“Win32DebugALL_BUILDALL_BUILD.tlogALL_BUILD.lastbuildstate”执行 Touch 任务。
    已完成生成项目“E:ReSimStudiocmakedemoALL_BUILD.vcxproj”(默认目标)的操作。


    已成功生成。
    0 个警告
    0 个错误

    已用时间 00:00:01.52

    E:ReSimStudiocmakedemo>cd debug

    E:ReSimStudiocmakedemoDebug>ls
    'ls' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。

    E:ReSimStudiocmakedemoDebug>HelloWorld.exe
    Hello World

    E:ReSimStudiocmakedemoDebug>

    总结
    cmake给跨平台的C++程序提供了很好的构建解决方案。适合需要跨平台项目的使用。功能不多,简单,但还是比较实用的。建议阅读https://cmake.org/cmake-tutorial/ 。基本功能在tutorial里面都有介绍。
    ————————————————
    版权声明:本文为CSDN博主「zhangyiant」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zhangyiant/article/details/51289404

  • 相关阅读:
    html悬停文字
    在线表单验证
    无法定位ul列表的下拉选项
    HDU 4576 Robot(概率dp+滚动数组)
    HDU 4405 Aeroplane chess(期望dp)
    CodeForces 401C Team(简单构造)
    POJ 2253 Frogger(最短路Dijkstra or flod)
    HDU 4763 Theme Section(kmp)
    【JZOJ5462】好文章【哈希】
    【JZOJ5462】好文章【哈希】
  • 原文地址:https://www.cnblogs.com/defineconst/p/13223510.html
Copyright © 2011-2022 走看看