当前位置: 首页 > wzjs >正文

上海高端网站建设定制seo排名关键词点击

上海高端网站建设定制,seo排名关键词点击,p2p理财网站建设,室内设计学院1.什么是CMake Makefile想必大家都不陌生吧,它能够解决我们的自动化编译问题,大多是IDE软件都集成了make,譬如 Visual C的 nmake、linux 下的 GNU make、Qt 的 qmake 等等。 不同的IDE所集成的make工具所遵循的规范和标准都不同,也…

1.什么是CMake

        Makefile想必大家都不陌生吧,它能够解决我们的自动化编译问题,大多是IDE软件都集成了make,譬如 Visual C++的 nmake、linux 下的 GNU make、Qt 的 qmake 等等。

 不同的IDE所集成的make工具所遵循的规范和标准都不同,也就导致其语法、格式不同,也就不能很好的跨平台编译,会再次使得工作繁琐起来

        那么cmake为了解决这个问题而诞生了,其允许开发者指定整个工程的编译流程,在根据编译平台,生成本地化的Makefile和工程文件,最后用户只需make编译即可

        简而言之,可以把cmake看成一款自动生成 Makefile的工具,所以编译流程就变成了:cmake—>make–>用户代码–>可执行文件

2.CMakeflie的安装和版本的查看

首先我们需要安装我们的CMake

sudo yum install cmake

然后我们可以通过

cmake -version

 来查看自己的cmake的版本

3.几个简单示例 

事实上,cmake的用法特别简单

  1. 编写CMakeLists.txt
  2. 执行命令cmake .
  3. 执行命令make
  4. 运行执行程序

看几个例子来 

3.1.编译一个.cc文件

首先让我们从最简单的代码入手,先来体验下cmake是如何操作的。编写main.cc,如下,

#include <stdio.h>int main(void)
{printf("Hello World\n");return 0;
}

    然后在main.cc相同目录下编写CMakeLists.txt,内容如下,

    cmake_minimum_required (VERSION 2.8)project (demo)add_executable(main main.cc)
    • 第一行意思是表示cmake的最低版本要求是2.8,我们安装的是3.20.2;
    • 第二行是表示本工程信息,也就是工程名叫demo;
    • 第三行比较关键,表示最终要生成的elf文件的名字叫main,使用的源文件是main.cc

    在终端下切到main.cc所在的目录下,然后输入以下命令运行下面这个命令

    cmake .

    执行之后,就会有下面这样子的情况发生 

    我们再看看当前目录下面 

    我们发现当前目录下面有Makefile了,我们打开看看

    好像不认识啊 ,这个我们不管,我们退出来make一下 

    完美啊!

    3.2.编译一个.hpp文件和一个.cc文件

    接下来我将编译一个.hpp文件和一个.cc文件

    method.hpp

    #pragma once
    #include<iostream>void Printf()
    {std::cout<<"hello world!"<<std::endl;
    }

    main.cc 

    #include"method.hpp"int main()
    {Printf();
    }

     CMakeLists.txt

    cmake_minimum_required(VERSION 2.8)  project(demo)  # 添加可执行文件,只需要列出源文件,头文件不需要列出  
    add_executable(main main.cc)  #  method.hpp 是 main.cc 依赖的头文件,确保它位于正确的路径下  
    # CMake 会自动处理包含路径(如果设置了正确的包含目录)  
    # 如果需要,可以使用 include_directories 来指定头文件搜索路径  
    # include_directories(path/to/headers)  
    # 但头文件和源文件在同一目录下,通常不需要这样做

     我们执行

    cmake .

    完美!

     3.3.编译一个.hpp文件和两个.cc文件

    接下来进入稍微复杂的例子:这次我们决定编译一个.h文件和两个.cc文件

    method.hpp

    #pragma once#include<iostream>void Printf();

    method.cc 

    #include"method.hpp"void Printf()
    {std::cout<<"hello world"<<std::endl;
    }

     main.cc

    #include"method.hpp"int main()
    {Printf();
    }

    我们现在就来编写CMakeLists.txt

    CMakeLists.txt

    cmake_minimum_required (VERSION 2.8)project (demo)add_executable(main main.cc method.cc)

     

    注意我这里只是在main.cc后面加路method.cc 

    我们使用一下

    cmake .

     

    完美啊!! 

    3.4.编译两个.hpp文件和一个.cc文件

    接下来我们将使用method.hpp,way.hpp,main.cc文件来编译

    way.hpp 

    #pragma once
    #include<iostream>
    void Printf1()
    {std::cout<<"Printf1"<<std::endl;
    }

    method.hpp  

    #pragma once
    #include<iostream>
    void Printf2()
    {std::cout<<"Printf2"<<std::endl;
    }

    main.cc

    #include"way.hpp"
    #include"method.hpp"int main()
    {Printf1();Printf2();
    }

      CMakeLists.txt

    cmake_minimum_required (VERSION 2.8)project (demo)add_executable(main main.cc)

     

    注意:因为我这里只有一个源文件,所以我们写一个main.cc就好

    我们执行

    cmake .

    完美! 

    4.CMakeLists.txt

            编写CMakeLists.txt最常用的功能就是调用其他的.h头文件和.so/.a库文件,将.cpp/.c/.cc文件编译成可执行文件或者新的库文件。

    4.1.CMakeLists.txt常用的几条指令

    CMakeLists.txt 文件使用一系列的 CMake 指令来描述构建过程。常见的指令包括:

    1、指定 CMake 的最低版本要求:

    cmake_minimum_required(VERSION <version>)

    例如:

    cmake_minimum_required(VERSION 3.10)

    2、定义项目的名称和使用的编程语言:

    project(<project_name> [<language>...])

    例如:

    project(MyProject CXX)

     

    3、指定要生成的可执行文件和其源文件:

    add_executable(<target> <source_files>...)

    例如:

    add_executable(MyExecutable main.cpp other_file.cpp)

    4、创建一个库(静态库或动态库)及其源文件:

    add_library(<target> <source_files>...)

    例如:

    add_library(MyLibrary STATIC library.cpp)

    5、链接目标文件与其他库:

    target_link_libraries(<target> <libraries>...)

    例如:

    target_link_libraries(MyExecutable MyLibrary)

    6、添加头文件搜索路径:

    include_directories(<dirs>...)

    例如:

    include_directories(${PROJECT_SOURCE_DIR}/include)

    7、设置变量的值:

    set(<variable> <value>...)

    例如:

    set(CMAKE_CXX_STANDARD 11)

    8、设置目标属性:

    target_include_directories(TARGET target_name[BEFORE | AFTER][SYSTEM] [PUBLIC | PRIVATE | INTERFACE][items1...])

    例如:

    target_include_directories(MyExecutable PRIVATE ${PROJECT_SOURCE_DIR}/include)

    9、安装规则:

    install(TARGETS target1 [target2 ...][RUNTIME DESTINATION dir][LIBRARY DESTINATION dir][ARCHIVE DESTINATION dir][INCLUDES DESTINATION [dir ...]][PRIVATE_HEADER DESTINATION dir][PUBLIC_HEADER DESTINATION dir])

    例如:

    install(TARGETS MyExecutable RUNTIME DESTINATION bin)

    10、条件语句 (if, elseif, else, endif 命令)

    if(expression)# Commands
    elseif(expression)# Commands
    else()# Commands
    endif()

    例如:

    if(CMAKE_BUILD_TYPE STREQUAL "Debug")message("Debug build")
    endif()

    11、自定义命令 (add_custom_command 命令):

    add_custom_command(TARGET targetPRE_BUILD | PRE_LINK | POST_BUILDCOMMAND command1 [ARGS] [WORKING_DIRECTORY dir][COMMAND command2 [ARGS]][DEPENDS [depend1 [depend2 ...]]][COMMENT comment][VERBATIM]
    )

    例如:

    add_custom_command(TARGET MyExecutable POST_BUILDCOMMAND ${CMAKE_COMMAND} -E echo "Build completed."
    )

    实例

    一个简单的 CMakeLists.txt 文件示例:

    cmake_minimum_required(VERSION 3.10)
    project(MyProject CXX)# 添加源文件
    add_executable(MyExecutable main.cpp)# 设置 C++ 标准
    set(CMAKE_CXX_STANDARD 11)

    4.2.变量和缓存

    CMake 使用变量来存储和传递信息,这些变量可以在 CMakeLists.txt 文件中定义和使用。

    变量可以分为普通变量和缓存变量。

    4.2.1.变量定义与使用

    定义变量:

    set(MY_VAR "Hello World")

    使用变量:

    message(STATUS "Variable MY_VAR is ${MY_VAR}")
    4.2.2.缓存变量

    缓存变量存储在 CMake 的缓存文件中,用户可以在 CMake 配置时修改这些值。缓存变量通常用于用户输入的设置,例如编译选项和路径。

    定义缓存变量:

    set(MY_CACHE_VAR "DefaultValue" CACHE STRING "A cache variable")

    使用缓存变量:

    message(STATUS "Cache variable MY_CACHE_VAR is ${MY_CACHE_VAR}")

     

    4.3.查找库和包

    CMake 可以通过 find_package() 指令自动检测和配置外部库和包。

    常用于查找系统安装的库或第三方库。

    4.3.1.find_package() 指令

    基本用法:

    find_package(Boost REQUIRED)

    指定版本:

    使用查找到的库:

    target_link_libraries(MyExecutable Boost::Boost)

    设置包含目录和链接目录:

    include_directories(${Boost_INCLUDE_DIRS})
    link_directories(${Boost_LIBRARY_DIRS})
    4.3.2.使用第三方库

    假设你想在项目中使用 Boost 库,CMakeLists.txt 文件可能如下所示:

    实例

    cmake_minimum_required(VERSION 3.10)
    project(MyProject CXX)# 查找 Boost 库
    find_package(Boost REQUIRED)# 添加源文件
    add_executable(MyExecutable main.cpp)# 链接 Boost 库
    target_link_libraries(MyExecutable Boost::Boost)

    通过上述内容,用户可以了解 CMakeLists.txt 文件的基本结构和常用指令,掌握如何定义和使用变量,查找和配置外部库,从而能够有效地使用 CMake 管理项目构建过程。


    文章转载自:

    http://AlFC1A6z.cndxL.cn
    http://zF2JIJ9S.cndxL.cn
    http://Vt0Sn4Qp.cndxL.cn
    http://6SVg6dj0.cndxL.cn
    http://x9kDcIG5.cndxL.cn
    http://M3toMbE2.cndxL.cn
    http://WWD6T6Cy.cndxL.cn
    http://ascshO3W.cndxL.cn
    http://J5fUEZ3Q.cndxL.cn
    http://0PaRHU5I.cndxL.cn
    http://fcjIKzXA.cndxL.cn
    http://3ZmLyoGy.cndxL.cn
    http://hgRRvqTA.cndxL.cn
    http://Fbsn7MH0.cndxL.cn
    http://8kFO0UyN.cndxL.cn
    http://AfR5kkTV.cndxL.cn
    http://w663OIfv.cndxL.cn
    http://Zcwdtr5Y.cndxL.cn
    http://idmOOcc1.cndxL.cn
    http://vtlFtjHF.cndxL.cn
    http://z8xYFZ76.cndxL.cn
    http://PHnpLkz9.cndxL.cn
    http://JbPEKEmW.cndxL.cn
    http://OUOMbqoP.cndxL.cn
    http://XhE7kPHL.cndxL.cn
    http://1DbfsUdd.cndxL.cn
    http://iCaiysj8.cndxL.cn
    http://4jqI1lUC.cndxL.cn
    http://HZ7ckToI.cndxL.cn
    http://QycdXBm6.cndxL.cn
    http://www.dtcms.com/wzjs/703412.html

    相关文章:

  1. 网站开发工程师需要哪些技术每年网站备案抽查
  2. 做网站用asp好吗建网站的公司公司
  3. 深圳市住建局网站官网seo优化设计
  4. 自己做个网站好还是做别人会员好休闲小零食网站开发方案
  5. 重庆网站开发培训机构水墨风格网站欣赏
  6. 佛山企业网站建设特色超链接到网站怎么做视频文件下载
  7. 网站做下要多少成都微信网站建设报价
  8. 网站定制公司推荐wordpress logo设置
  9. 做网站如何防止被骗用js做的网站
  10. 网站建设公司 保证完成 怎么找缺钱的企业客户
  11. 怎样查询网站建设时间石家庄做网站
  12. 南宁网站开发英文wordpress自动更新
  13. 嘉兴建设工程造价信息网站线上平台建设计划书怎么写
  14. 石狮外贸网站建设公司报价艺术留学机构
  15. 东莞网站建设设计公司哪家好wordpress主题安装后不一样
  16. 北碚免费建站哪家做得好想学装修设计在哪里学
  17. 做网站需要用什么技术在线设计平台的设计理念
  18. 珠海美容网站建设农业网站 源码
  19. 路由器屏蔽网站怎么做老域名重新做网站
  20. 方太网站谁做的4虎最新ip是多少呢有人知道吗
  21. 河北网站建设价格大全什么网站可以兼职做效果图
  22. 企业网站建设合同书.doc自建站是什么意思
  23. 网站怎么做切换图片app软件开发
  24. 网站建设 目的免费招标平台
  25. 北京专业公司建网站平台手机网页编程软件
  26. 温州网页模板建站网站的备案的要多少钱
  27. 长沙旅游网站制作上海工商局官网
  28. 优酷视频上传网站源码wordpress主题 qux
  29. 用dw怎么做用户登录页面的网站阿里模板网站建设
  30. 淘宝的网站建设怎么建wordpress会员写文章