精华内容
下载资源
问答
  • cmake 教程

    2019-04-24 01:06:07
    NULL 博文链接:https://gangling.iteye.com/blog/2381913
  • CMake教程及实战

    2017-12-30 07:41:03
    CMake教程,对cmake的各个命令有详细的介绍。包含从利用cmake创建最基础及复杂工程的实战教程。
  • cmake教程+源码.rar

    2019-07-10 16:49:20
    cmake实践教程,带书签方便阅读,并且带有配套源码,方便边调试边学习。
  • CMake 教程

    2019-01-10 19:26:22
    下面是一个循序渐进的教程,介绍CMAKE帮助解决的常见构建系统用例。在掌握CMAKE时,已经介绍了许多这些主题作为单独的问题,但是看看它们如何在示例项目中一起工作是非常有帮助的。本教程可以在cmake源代码树的tests...

    前面是中文,是我根据项目过程应用中用到的方面的知识。
    后面附有英文版的,如果有不明白的地方,可以直接看英文版的。谢谢

    CMake
    下面是一个循序渐进的教程,介绍CMAKE帮助解决的常见构建系统用例。在掌握CMAKE时,已经介绍了许多这些主题作为单独的问题,但是看看它们如何在示例项目中一起工作是非常有帮助的。本教程可以在cmake源代码树的tests/tutorial目录中找到。每个步骤都有自己的子目录,其中包含该步骤教程的完整副本。
    有关cmake概念和源树组织的概述,请参阅cmake构建系统(7)和cmake,(7)手册页的介绍部分。
    基本起点(步骤1)

    最基本的项目是从源代码文件构建的可执行文件。对于简单项目,只需要两行cmakelists.txt文件。这将是本教程的起点。cmakelists.txt文件如下:

    cmake_minimum_required (VERSION 2.6)
    project (Tutorial)
    add_executable(Tutorial tutorial.cxx)

    请注意,此示例在cmakelists.txt文件中使用小写命令。CMAKE支持upper、lower和mixed case命令。tutorial.cxx的源代码将计算一个数字的平方根,它的第一个版本非常简单,如下所示:
    // A simple program that computes the square root of a number
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int main (int argc, char *argv[])
    {
    if (argc < 2)
    {
    fprintf(stdout,“Usage: %s number\n”,argv[0]);
    return 1;
    }
    double inputValue = atof(argv[1]);
    double outputValue = sqrt(inputValue);
    fprintf(stdout,“The square root of %g is %g\n”,
    inputValue, outputValue);
    return 0;
    }

    添加版本号和配置的头文件

    我们将添加的第一个特性是为可执行文件和项目提供一个版本号。虽然您可以在源代码中专门这样做,但在cmakelists.txt文件中这样做可以提供更多的灵活性。要添加版本号,我们修改cmakelists.txt文件,如下所示:
    cmake_minimum_required (VERSION 2.6)
    project (Tutorial)

    The version number.

    set (Tutorial_VERSION_MAJOR 1)
    set (Tutorial_VERSION_MINOR 0)

    configure a header file to pass some of the CMake settings

    to the source code

    configure_file (
    P R O J E C T S O U R C E D I R / T u t o r i a l C o n f i g . h . i n &quot; &quot; {PROJECT_SOURCE_DIR}/TutorialConfig.h.in&quot; &quot; PROJECTSOURCEDIR/TutorialConfig.h.in""{PROJECT_BINARY_DIR}/TutorialConfig.h”
    )

    add the binary tree to the search path for include files

    so that we will find TutorialConfig.h

    include_directories("${PROJECT_BINARY_DIR}")

    add the executable

    add_executable(Tutorial tutorial.cxx)

    https://cmake.org/cmake-tutorial/
    上面是CMake 的官网,有需要的可以去看看。

    展开全文
  • 原文:http://rebootcat.com/2020/09/02/cmake/ 前言 我是一个 linux c++ 开发者,但是一直对 Makefile 的语法很是头痛,每次都记不住,所以每次写 Makefile 都很痛苦,Makefile 里需要你自己编写依赖和推导规则,...

    旧博文,搬到 csdn
    原文:http://rebootcat.com/2020/09/02/cmake/

    前言

    我是一个 linux c++ 开发者,但是一直对 Makefile 的语法很是头痛,每次都记不住,所以每次写 Makefile 都很痛苦,Makefile 里需要你自己编写依赖和推导规则,这个过程能不能简单点呢?

    对于编译一个 C++ 工程来说,也许需要的就是头文件路径、库路径、编译参数,剩下的东西基本也不重要,这三样足够去编译一个工程了。所以有没有一个工具能简单点的去实现 C++ 项目的构建呢?

    答案是有的,上一篇博文 scons构建C++项目 介绍了 使用 scons 来构建 C++ 项目,大大提高了编写构建脚本的效率,使用起来也极为方便,对于熟悉 python 的童鞋来说真的是大大的福音;但 scons 的问题就是在大型项目的时候构建起来可能会很慢(听说的)。那么有没有其他的工具呢?

    当然有,cmake 就是这样的一个工具,既能满足跨平台的编译,并且屏蔽了 Makefile 蛋疼的语法,使用一种更加简单的语法编写构建脚本,用在大型项目也毫无压力。

    当然,对于我个人来说,cmake 的使用还是有门槛的,刚接触 cmake 可能还是会被它的语法搞的头疼(cmake 的语法也还是挺折腾的)。但是别急,沉下心来,本篇博文就带你从 cmake 入门到编写一个复杂工程的实战。

    CMake

    什么是 cmake

    这里直接引用官网的解释:

    CMake is an open-source, cross-platform family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice. The suite of CMake tools were created by Kitware in response to the need for a powerful, cross-platform build environment for open-source projects such as ITK and VTK.

    CMake 是一个开源的跨平台的构建工具,语法简单,编译独立,并且很多知名大型项目也在用 CMake,比如 KDE、Netflix 、ReactOS等。

    OK,话不多说,如何使用呢?

    安装 cmake

    sudo yum install  cmake3.x86_64
    

    现在最新版的 cmake 已经到 3.18.2 了。我使用的是 3.17.2 版本。

    $ cmake --version
    cmake version 3.17.2
    
    CMake suite maintained and supported by Kitware (kitware.com/cmake).
    

    初识 cmake

    注:本文以一个多源文件,多目录结构的项目 mux 为例,介绍 cmake 的使用,相关源文件以及cmake 脚本可以直接查看源项目

    使用 cmake 来构建 C++ 项目,需要先编写 cmake 构建脚本,文件名为 CMakeLists.txt,项目顶层目录需要放一个 CMakeLists.txt,同时子目录可以根据需要放置 CMakeLists.txt。

    那么先来看看 CMakeLists.txt 长啥样?

    cmake_minimum_required(VERSION 3.8.0)
    
    set(CMAKE_CXX_STANDARD 11)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    set(CMAKE_CXX_EXTENSIONS OFF)
    
    set(CMAKE_C_STANDARD 99)
    set(CMAKE_C_STANDARD_REQUIRED ON)
    set(CMAKE_C_EXTENSIONS OFF)
    
    project(MUX CXX C)
    
    add_definitions(
        -DTEST1   # define marco
        -DTEST2   # define marco
    )
    
    # common compiling options
    add_compile_options(
        -Wl,--no-as-needed
        -fno-strict-aliasing
        -fthreadsafe-statics
        -pthread
        #-fstack-protector-strong
        -fno-short-enums
        -fPIC
    )
    
    option(XENABLE_TEST3  "enable test3 marco" OFF)
    
    set(EXECUTABLE_OUTPUT_PATH ${MUX_BINARY_DIR}/bin)
    set(LIBRARY_OUTPUT_PATH ${MUX_BINARY_DIR}/lib)
    
    if (XENABLE_TEST3)
        add_definitions(-DTEST3)
    endif()
    
    if (NOT CMAKE_BUILD_TYPE)
        set(CMAKE_BUILD_TYPE Debug)
    endif()
    
    
    message(STATUS "CMAKE_BUILD_TYPE:" ${CMAKE_BUILD_TYPE})
    message(STATUS "CMAKE_SYSTEM_NAME:" ${CMAKE_SYSTEM_NAME})
    message(STATUS "XENABLE_TEST3:" ${XENABLE_TEST3})
    
    find_package(Threads REQUIRED)
    
    # include header dirs
    include_directories(${CMAKE_SOURCE_DIR})   # project dir
    include_directories(${CMAKE_SOURCE_DIR}/third-party/include)   # project dir
    include_directories(${CMAKE_CURRENT_BINARY_DIR})  # current CMakeLists.txt dir (including sub dir)
    
    # link lib dirs
    link_directories(${CMAKE_SOURCE_DIR}/third-party/lib)
    link_directories(${LIBRARY_OUTPUT_PATH})  # generate in building
    
    add_subdirectory(demo/bench)
    add_subdirectory(demo/echo)
    add_subdirectory(epoll)
    add_subdirectory(mbase)
    add_subdirectory(message_handle)
    add_subdirectory(transport)
    

    完整的 CMakeLists.txt 见 我的github,同时我也会以我的github项目 mux 为例,介绍 cmake 的使用。

    上面的 CMakeLists.txt 乍一看,好多内容,但是别慌,我们来一个个说。

    详解 cmake

    注意:cmake 的语法可以分为命令(函数)和参数。 命令不缺分大小写,参数区分大小写

    注意:cmake 的语法可以分为命令(函数)和参数。 命令不缺分大小写,参数区分大小写

    设置 cmake 版本的要求

    cmake_minimum_required(VERSION 3.8.0)
    

    在 cmake 中设置 c++ 标准,启用 c++11 或以上(根据项目的需求来)

    set(CMAKE_CXX_STANDARD 11)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    set(CMAKE_CXX_EXTENSIONS OFF)
    
    set(CMAKE_C_STANDARD 99)
    set(CMAKE_C_STANDARD_REQUIRED ON)
    set(CMAKE_C_EXTENSIONS OFF)
    
    

    设置项目名以及项目语言

    project(MUX CXX C)
    

    设置完项目名称之后,会自动创建两个变量 <PROJECT-NAME>_SOURCE_DIR<PROJECT-NAME>_BINARY_DIR,对于 mux 这个项目来说,也就是 MUX_SOURCE_DIRMUX_BINARY_DIR

    MUX_SOURCE_DIR 表示工程顶层目录; MUX_BINARY_DIR 表示 cmake 构建发生的目录。

    因为你一定熟悉或者用过下面的命令或步骤:

    mkdir cbuild
    cd cbuild
    cmake ..
    make
    make test
    make install
    

    通常我们会单独新建一个 cbuild 目录,用来构建项目,并且存放过程中产生的文件。那么 cbuild 目录就是 MUX_BINARY_DIR 表示的目录,cbuild 的上一级目录也就是项目顶层目录就是 MUX_SOURCE_DIR 表示的目录。

    如果你没有单独新建 cbuild 目录,而是直接在项目顶层目录使用 cmake . ,那么上面两个变量均指项目顶层目录。

    详见 https://cmake.org/cmake/help/latest/command/project.html

    添加编译宏

    add_definitions(
        -DTEST1   # define marco
        -DTEST2   # define marco
    )
    
    

    上面是我随便写的两个宏 TEST1TEST2,那么在c++代码中通常是这样的:

    #ifdef TEST1
        // do something about test1
    #endif
    
    
    #ifdef TEST2
       // do something about test2
    #endif
    

    当然要开启这个宏也可以不用写在 CMakeLists.txt 文件中,可以直接这样使用:

    mkdir cbuild && cd cbuild 
    cmake .. -DTEST1
    

    这个根据你的项目需求来操作。

    定义一些用户自定义的可选项

    option(XENABLE_TEST3  "enable test3 marco" OFF)
    
    if (XENABLE_TEST3)
        add_definitions(-DTEST3)
    endif()
    
    if (NOT CMAKE_BUILD_TYPE)
        set(CMAKE_BUILD_TYPE Debug)
    endif()
    

    使用 option 命令可以自定义一些变量的值,作为一些条件判断的开关很方便。

    详见 https://cmake.org/cmake/help/latest/command/option.html

    添加编译选项

    # common compiling options
    add_compile_options(
        -Wl,--no-as-needed
        -fno-strict-aliasing
        -fthreadsafe-statics
        -pthread
        #-fstack-protector-strong
        -fno-short-enums
        -fPIC
    )
    

    这里就是一些编译选项,根据自己的项目需求修改。

    设置编译二进制(binary-executable 和 binary-lib)存放路径

    set(EXECUTABLE_OUTPUT_PATH ${MUX_BINARY_DIR}/bin)
    set(LIBRARY_OUTPUT_PATH ${MUX_BINARY_DIR}/lib)
    

    可以看到上面用到了 MUX_BINARY_DIR 这个变量,也就是说最终编译出来的二进制程序和lib 库会存放在 cbuild/bincbuild/lib 中。

    打印一些信息到终端

    message(STATUS "CMAKE_BUILD_TYPE:" ${CMAKE_BUILD_TYPE})
    message(STATUS "CMAKE_SYSTEM_NAME:" ${CMAKE_SYSTEM_NAME})
    message(STATUS "XENABLE_TEST3:" ${XENABLE_TEST3})
    

    打印一些调试信息,或者编译信息到终端,使用的是 message 命令。

    详见 https://cmake.org/cmake/help/latest/command/message.html

    设置头文件路径

    # include header dirs
    include_directories(${CMAKE_SOURCE_DIR})   # project dir
    include_directories(${CMAKE_SOURCE_DIR}/third-party/include)   # project dir
    include_directories(${CMAKE_CURRENT_BINARY_DIR})  # current CMakeLists.txt dir (including sub dir)
    

    分别解释一下:

    CMAKE_SOURCE_DIR 表示工程顶层目录,也就是 MUX_SOURCE_DIR

    CMAKE_CURRENT_BINARY_DIR 表示当前处理的 CMakeLists.txt 所在的目录,对于子目录中的 CMakeLists.txt 来说,即表示这个子目录。

    通常这两个是常用的,必须的。然后使用 include_directories 命令包含其他的一些头文件路径。

    设置依赖库的路径

    # link lib dirs
    link_directories(${CMAKE_SOURCE_DIR}/third-party/lib)
    link_directories(${LIBRARY_OUTPUT_PATH})  # generate in building
    

    LIBRARY_OUTPUT_PATH 就是上面设置的编译目标二进制库的存放路径,因为实际项目中,子模块之间可能会有一些依赖,子模块单独编译成一个库,然后让其他模块链接。这个目录也就是 cbuild/lib 目录。

    引入子模块(子目录)

    add_subdirectory(demo/bench)
    add_subdirectory(demo/echo)
    add_subdirectory(epoll)
    add_subdirectory(mbase)
    add_subdirectory(message_handle)
    add_subdirectory(transport)
    

    使用 add_subdirectory 命令把子模块包含进来,必须确保每个子目录下面有一个 CMakeLists.txt 文件,不然会报错。

    以上就是工程顶层目录的 CMakeLists.txt 的内容,分析下来是不是很清楚呢

    那么工程顶层目录的 CMakeLists.txt 其实做的事情就是设置一些基本的变量,宏开关,编译参数,头文件路径,依赖库路径,编译目标保存路径等等,子目录中的 CMakeLists.txt 才是真正产生编译目标的(exe和lib)。

    生成静态库/动态库

    # keep all cpp files in varibale ${epoll_src}
    aux_source_directory(./src epoll_src)
    
    add_library(epoll STATIC ${epoll_src})
    
    add_dependencies(epoll mbase )
    target_link_libraries(epoll mbase pthread)
    

    源文件在这:戳我

    使用 aux_source_directory 添加源文件,相当于把 src 目录下的所有 c++ 文件保存到 epoll_src 这个变量中;

    使用 add_library 生成目标库(根据需要可以生成静态库和动态库,分别使用 STATIC 和 SHARED)

    然后就是添加这个模块需要依赖到的其他模块,以及链接参数。

    上面的代码最终就会在 cbuild/lib 目录下生成一个 libepoll.a 文件。

    生成二进制可执行文件

    # build target echo_server
    add_executable(echo_server echo_server.cc)
    add_dependencies(echo_server transport msghandler mbase)
    target_link_libraries(echo_server transport msghandler mbase)
    
    
    # build target echo_client
    add_executable(echo_client client.cc)
    add_dependencies(echo_client transport msghandler mbase)
    target_link_libraries(echo_client transport msghandler mbase)
    

    源文件在这:戳我

    和生成库大体是类似的,区别是使用的是 add_executable 这个命令。

    其他子模块的 CMakeLists.txt 见我的github.

    cmake 编译构建

    上面详细的介绍了 CMakeLists.txt 的写法,如果仿照本文,应该也能写出适合你项目的构建脚本,但是可能还不够,其他语法自行 google 学习。

    上面其实是以我的项目 进行的演示,有必要解读一下这个项目的结构层次:

    $ tree mux -d
    mux
    ├── demo
    │   ├── bench
    │   └── echo
    ├── epoll
    │   ├── include
    │   └── src
    ├── mbase
    │   └── src
    ├── message_handle
    │   ├── include
    │   └── src
    ├── third-party
    │   ├── include
    │   │   ├── nlohmann
    │   │   └── spdlog
    │   │       ├── cfg
    │   │       ├── details
    │   │       ├── fmt
    │   │       │   └── bundled
    │   │       └── sinks
    │   └── lib
    └── transport
        ├── include
        └── src
    
    24 directories
    

    mux 是工程顶层目录,下面包含的 epollmbasemessage_handletransport 这几个目录,均各自打包成一个静态库; demo 目录下分别包含 benchecho 两个目录,这两个目录下需要构建可执行程序。

    所以首先是epollmbasemessage_handletransport 这几个目录生成静态库,也就是最终会在 cbuild/lib 目录生成 libepoll.a, libmbase.a, libmsghandler.a, libtransport.a, 然后 benchecho 下的代码依赖于前面的几个模块,生成可执行程序。

    前面其实已经提到了,基本的构建命令如下:

    mkdir cbuild
    cd cbuild
    cmake ..
    make -j4
    

    其中注意,如果你没有单独构建 cbuild 目录的话,可能会生成一些中间临时文件污染了目录。并且注意,cmake 后面的 .. 表示的是工程顶层的 CMakeLists.txt 的目录。所以如果直接使用的是工程顶层目录构建的话,就应该是 cmake .

    $ cmake ..
    -- The CXX compiler identification is GNU 4.8.5
    -- The C compiler identification is GNU 4.8.5
    -- Check for working CXX compiler: /usr/local/bin/c++
    -- Check for working CXX compiler: /usr/local/bin/c++ - works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Check for working C compiler: /usr/local/bin/gcc
    -- Check for working C compiler: /usr/local/bin/gcc - works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- CMAKE_BUILD_TYPE:Debug
    -- CMAKE_SYSTEM_NAME:Linux
    -- XENABLE_TEST3:OFF
    -- Looking for pthread.h
    -- Looking for pthread.h - found
    -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
    -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
    -- Looking for pthread_create in pthreads
    -- Looking for pthread_create in pthreads - not found
    -- Looking for pthread_create in pthread
    -- Looking for pthread_create in pthread - found
    -- Found Threads: TRUE
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /mnt/centos-share/workspace/mux/cbuild
    
    
    
    $ make -j4
    Scanning dependencies of target mbase
    [  5%] Building CXX object mbase/CMakeFiles/mbase.dir/src/packet.cc.o
    [ 11%] Linking CXX static library ../lib/libmbase.a
    [ 11%] Built target mbase
    Scanning dependencies of target msghandler
    Scanning dependencies of target epoll
    [ 17%] Building CXX object message_handle/CMakeFiles/msghandler.dir/src/message_handler.cc.o
    [ 23%] Building CXX object epoll/CMakeFiles/epoll.dir/src/epoll_tcp_client.cc.o
    [ 29%] Building CXX object epoll/CMakeFiles/epoll.dir/src/epoll_tcp_server.cc.o
    [ 35%] Linking CXX static library ../lib/libepoll.a
    [ 41%] Linking CXX static library ../lib/libmsghandler.a
    [ 41%] Built target msghandler
    [ 41%] Built target epoll
    Scanning dependencies of target transport
    [ 47%] Building CXX object transport/CMakeFiles/transport.dir/src/tcp_transport.cc.o
    [ 52%] Linking CXX static library ../lib/libtransport.a
    [ 52%] Built target transport
    Scanning dependencies of target echo_client
    Scanning dependencies of target echo_server
    Scanning dependencies of target bench_client
    Scanning dependencies of target bench_server
    [ 58%] Building CXX object demo/echo/CMakeFiles/echo_client.dir/client.cc.o
    [ 64%] Building CXX object demo/bench/CMakeFiles/bench_client.dir/client.cc.o
    [ 70%] Building CXX object demo/echo/CMakeFiles/echo_server.dir/echo_server.cc.o
    [ 76%] Building CXX object demo/bench/CMakeFiles/bench_server.dir/bench_server.cc.o
    [ 82%] Linking CXX executable ../../bin/echo_client
    [ 88%] Linking CXX executable ../../bin/echo_server
    [ 94%] Linking CXX executable ../../bin/bench_server
    [100%] Linking CXX executable ../../bin/bench_client
    [100%] Built target echo_client
    [100%] Built target echo_server
    [100%] Built target bench_client
    [100%] Built target bench_server
    

    看看生成了啥:

    $ ls cbuild/bin/
    bench_client  bench_server  echo_client  echo_server
    
    $ ls cbuild/lib/
    libepoll.a  libmbase.a  libmsghandler.a  libtransport.a
    

    Over!

    写在最后

    cmake 的构建其实认真熟悉之后,也还是能快速上手的,不要产生排斥心理,不然学起来就很慢很费劲。所以建议第一次接触 cmake 的或者以前一直抵触 cmake 的童鞋,静下心来,认认真真的看完本文或者其他的入门例子,那么你也能快速写一个多目录,多层次结构的 cmake 工程。

    cmake 中其他的一些用法,建议随时查看官方的 cook book.

    加油,少年,别怕!

    另外,文中涉及到的项目可以在我的github 找到。

    参考

    CMake 教程 | CMake 从入门到应用

    cmake使用教程

    Blog:

    2020-09-02 于杭州
    By 史矛革

    展开全文
  • cmake教程,cmake实践,跟我一起写Makefile三本合一,带书签。 学习cmake很好的教材
  • CMake教程

    2020-05-03 21:26:38
  • cmake教程-源码

    2021-02-14 01:10:20
    cmake教程
  • CMake教程.zip

    2020-06-12 09:31:41
    这是学习CMake的入门到精通的教程CMake支持跨平台编程,是在Linux和Window环境下编程的必备知识
  • cmake教程实例

    2018-06-17 19:14:46
    cmake编译方法,语法,十分实用介绍学习方式,从安装入门到精通一步步带你精通
  • cmake详细教程

    2018-08-20 17:14:49
    简单到复杂的cmake编写教程,适合刚入们的新手。cmake 已经开发了 5,6 年的时间,如果没有 KDE4,也许不会有人或者 Linux 发行版 本重视 cmake,因为除了 Kitware 似乎没有人使用它。通过 KDE4
  • cmake学习手册集合包括《cmake教程》《cmake开发手册详解》《cmake中文手册》
  • Cmake教程

    2019-12-23 01:44:37
    cmake是构建c/c++非常好用的工具。

    Cmake是构建c/c++非常好用的工具。本文基本按照Cmake官网翻译而来。

    1.开始

    首先需要建立CmakeLists.txt文件,用于配置项目的各种源代码和库之间的构建依赖关系。

    cmake_minimum_required(VERSION 3.10)
    
    # set the project name
    project(Tutorial)
    
    # add the executable
    add_executable(Tutorial tutorial.cxx)
    

    Cmakelists.txt文件最基本的构架就是上面的三行代码。
    第一行用于设置Cmake的最低版本;
    第二行用于设置本项目的名称;
    第三行用于添加一个本项目运行的源文件,目前项目仅包含一个源文件,没有其他头文件和依赖的库。

    1.1添加版文数配置头文件

    cmake_minimum_required(VERSION 3.10)
    
    # set the project name and version
    project(Tutorial VERSION 1.0)
    

    上面代码相对于最简单的三行代码,在项目的后面添加了版本号。

    展开全文
  • C/C++从零开始的CMake教程 如果你有过在linux系统上源码安装某款软件的经历,那么肯定对这三部曲一点都不会陌生——配置(configure)、编译(make)、安装(make install)。几乎每次都是机器人般的操作,这背后其实是...
  • 超详细的cmake教程

    2020-03-15 14:13:25
    转自... 什么是 CMake All problems in computer science can be solved by another level of indirection. David Wheeler 你或许听过好几种 Make 工具,例如...
  • CMake教程-Step2(添加库) 附件根据CMake官方教程一步一步来的。 附件代码配合以下博文一起学习,可更快掌握相关技术。 https://blog.csdn.net/yufm/article/details/107660428
  • CMake最详细教程.pdf

    2019-03-01 10:21:09
    CMake 教程高清文字版,图解CMake原理过程。非常详细。带书签。
  • cmake教程参考什么是cmakecmake 常见语法整理入门案例单个源文件多个源文件同一目录,多个源文件多个目录,多个源文件进阶案例自定义编译选项指定安装和测试定制安装规则为工程添加测试支持gdb添加环境检查添加版本...
  • CMake教程之构建Qt平台

    2020-05-29 00:07:43
      关于Qt环境下的项目,这里也使用了cmake进行构建,这样可以减少对工程文件的依赖,同时可以做到跨平台的使用。   目前使用的平台是:CMake3.16.4 + VS2015。 二:目录结构   国际惯例,直接上工程目录结构:...
  • cmake教程.rar

    2021-09-22 10:28:35
    cmake教程.rar
  • 其实这是因为他们用cmake这个软件来编译整个项目。 为何要用cmake? 如果不用cmake的话那么我们一般会用visual studio这种软件来编译运行整个项目。但是这里有个问题我visual studio2010的项目很可能vs2017打不开。...
  • Ubuntu安装cmake教程

    千次阅读 2020-05-12 14:17:15
    之前安装cmake时遇到点小麻烦,特写此博客记录一下: 在此说明一下,要是对cmake版本没有要求的话,可以直接使用apt命令进行安装,安装命令如下: sudo apt install cmake 安装特定版本的cmake步骤如下: 1、前往...
  • Cmake 教程

    2013-06-03 23:46:46
    Cmake 教程
  • cmake教程详解(看了不后悔版)

    千次阅读 2020-05-21 09:46:03
    cmake教程 在看这篇博文前我整理了一些基础知识,如果觉得可以请收藏 C_INCLUDE_PATH(for C header files)和CPLUS_INCLUDE_PATH(for C++ header files)的环境变量是指明头文件的搜索路径,此两个环境变量指明的头文件...
  • CMake教程-源码

    2021-02-18 20:41:22
    CMake教程
  • CMake教程-Step5(添加系统自检) 附件根据CMake官方教程一步一步来的。 附件代码配合以下博文一起学习,可更快掌握相关技术。 https://blog.csdn.net/yufm/article/details/107692291
  • CMake教程-Step4(调试和安装) 附件根据CMake官方教程一步一步来的。 附件代码配合以下博文一起学习,可更快掌握相关技术。 https://blog.csdn.net/yufm/article/details/107692194
  • CMake教程-Step3(添加库的使用要求) 附件根据CMake官方教程一步一步来的。 附件代码配合以下博文一起学习,可更快掌握相关技术。 https://blog.csdn.net/yufm/article/details/107692116

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,577
精华内容 8,230
关键字:

cmake教程