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

长春建设信息网站建筑网片排焊机

长春建设信息网站,建筑网片排焊机,南京网络科技网站建设,网址导航浏览器下载**11/24/2024更新:**如果在CMakeLists.txt中使用Python的话,如果不指定Python路径,它会默认使用/usr目录下的Python,如果想使用conda安装的Python,可以设置如下: set(Python3_ROOT_DIR "/home/Softwa…

**11/24/2024更新:**如果在CMakeLists.txt中使用Python的话,如果不指定Python路径,它会默认使用/usr目录下的Python,如果想使用conda安装的Python,可以设置如下:

set(Python3_ROOT_DIR "/home/Software/miniconda3/bin") # 主要是这行
find_package(PythonInterp 3 REQUIRED)

前提

来来回回使用cmake已经多次了,有一些cmake中使用的命令还是比较模糊,这里进行简单地梳理并进行记录。如有问题,欢迎大家指教。

CMake 相关命令

CMake是一个跨平台的安装(编译)工具,而不是编译器。CMake不能直接构建出可以在机器上运行的软件(这就是为什么我们经常cmake .. 后,还要使用make),它的主要作用是能够使用统一的语法,在特定平台下,生成能够指导编译器完成编译工作的文件,这个文件称为构建档(在UNIX上是Makefile,在windows上是.sln)。用于生成构建档的统一语法的文件,即CMakeLists.txt,我们称之为组态档

  1. cmake_minimum_required(VERSION <min>[...<policy_max>] [FATAL_ERROR])
    需要cmake的最小版本,这里"[]"之内的为可选参数。一般的使用,例如cmake_minimum_required(VERSION 3.21),表明cmake的最小版本为3.21。

  2. project(<PROJECT-NAME> [<language-name>...])
    设置项目的名称,同时把这个名称赋值给cmake中的变量PROJECT_NAME,可选参数[<language-name>]代表是哪种编程语言要被build,默认是C和C++。一般使用:project(hello_world),表明项目名称为hello_world。

  3. message([<mode>] "message text" ...)
    记录一条信息,可以理解为c++中的printf,我们可以使用这个命令将我们想要的一些信息输出。[<mode>] 是一个可选参数,用于指定消息的级别。常见的模式包括 STATUS、WARNING、AUTHOR_WARNING、SEND_ERROR 和 FATAL_ERROR。默认情况下,消息的模式是 STATUS,表示一般的信息。不同的模式可以改变消息的显示方式和影响构建的行为。一般使用:message(STATUS "I am a cmaker")

  4. add_executable(<name> <options>... <sources>...)
    添加一个名为name的可执行目标,这个目标从后面的<source>源文件中构建(build)。一般使用add_executable(demo main.cpp),表明要使用main.cpp来构建可执行文件的目标demo(并不是可执行文件demo)。demo是目标名,而不是可执行文件名。

  5. set(<variable> <value>... [PARENT_SCOPE])
    设置一个变量的值。<variable> 是要设置的变量的名称。<value>... 是一个或多个要分配给变量的值。
    [PARENT_SCOPE] 是一个可选参数,用于指定将变量设置为父作用域中的变量。如果不指定 [PARENT_SCOPE] 参数,那么变量将被设置为当前作用域中的变量。如果指定了 [PARENT_SCOPE] 参数,那么变量将被设置为父作用域中的变量。一般使用:set(CMAKE_CXX_STANDARD 14),将CMAKE_CXX_STANDARD这个变量的值设置为14。

  6. add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL] [SYSTEM])
    向 CMake 项目中添加一个子目录,并将该子目录中的 CMakeLists.txt 文件包含到当前项目中,从而允许在子目录中构建其他的目标。source_dir 是要添加的子目录的路径。这个命令就牵扯到了两个及两个以上CMakeLists.txt的情况,假如我父目录有一个CMakeLists.txt,子目录里也有一个CMakeLists.txt,在build父目录时,也想build子目录,就可以使用这条命令。一般使用:add_subdirectory(subdirectory)

  7. target_link_libraries(<target> ... <item>... ...)
    将一个或多个库链接到特定的目标(例如可执行文件或库)。具体来说,它将库文件链接到目标,使得目标可以使用这些库中定义的函数和符号。简单来说,比如我们在程序中使用了Glog的库函数,那我们编译时肯定要带上Glog的库,这个命令就可以帮助我们将Glog库文件链接到目标(预处理->编译->汇编->链接)。一般使用:target_link_libraries(demo glog::glog)

  8. target_include_directories(<target> [SYSTEM] [AFTER|BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...])
    指定要build一个目标是要使用的头文件,这里的头文件可以理解为.h文件。也就是在我们写代码过程中,只有include头文件后,才可以找到头文件中声明的函数等。SYSTEM是一个可选参数,表示指定的包含目录应被视为系统目录。这通常用于包含系统提供的头文件,例如 C 标准库。一般使用:target_include_directories(demo ../include)

  9. add_library(<name> [<type>] [EXCLUDE_FROM_ALL] <sources>...)
    添加一个名为name的库文件,它从<sources>源文件构建。具体来说,它将源文件编译成一个库文件,以供其他目标(如可执行文件或其他库)使用 。<name>是库名称;[<type>]是构建出的库类型,常见的类型包括 STATIC(静态库)和 SHARED(共享库)。如果不提供类型,默认情况下将会创建一个静态库;<sources>指源文件。
    一般使用:

    # 声明要构建的静态库的名称为 mylib
    add_library(mylib STATIC # 添加源文件列表src/foo.cppsrc/bar.cpp
    )# 指定头文件目录
    target_include_directories(mylib PUBLIC include)
    
  10. aux_source_directory(<dir> <variable>)
    查找目录中的所有源文件。具体来说,它会在指定目录下查找所有的源文件,并将它们的文件名(包括路径)添加到指定的变量中。
    一般使用:

    # 将 src 目录下的所有源文件添加到 SRC_FILES 变量中
    aux_source_directory(src SRC_FILES)# 输出 SRC_FILES 变量的内容,可以看到它包含了 src 目录下所有源文件的路径
    message("Source files: ${SRC_FILES}")
    
  11. install()
    install命令主要是生成项目的安装规则。这个命令一般不是单独使用的,要在一个项目中和其他的命令一起使用,而且看官方文档似乎是比较复杂,接下来单独出一篇关于install命令的博客。

  12. add_definitions
    CMake 中用于向编译器添加预定义宏的命令。在 C++ 中,预定义宏可以通过 #define 指令定义,而在使用 CMake 进行项目构建时,可以使用 add_definitions 命令来实现类似的功能。这个命令似乎现在已经被add_compile_definitions替代。
    一个示例:

    add_definitions(-DINTERNAL) // 给程序中添加了一个名为`INTERNAL`的宏
    
  13. add_compile_definitions

    add_compile_definitions(INTERNAL)
    

CPACK

  1. CPACK_PACKAGE_DIRECTORY
    指定包的存放路径。
  2. CPACK_GENERATOR
    常用的是TGZ,就是打包成一个什么文件(压缩包的后缀名)
  3. CPACK_PACKAGE_FILE_NAME
    压缩包的名称。

注意:要使用CPACK的话,要在CMakelists.txt 中添加include(CPack),然后在make时,可以使用make package命令。

Cmake相关变量

  1. CMAKE_BUILD_PARALLEL_LEVEL
    指定build项目时,使用的线程数。

  2. CMAKE_SYSTEM_NAME
    表示当前操作系统的名称。

  3. CMAKE_BUILD_TYPE
    用于指定项目的构建类型。以下几种常见的构建类型:
    - “Debug”:用于调试目的,生成调试符号,并禁用优化。
    - “Release”:用于发布目的,启用各种优化选项,生成高性能的可执行文件。
    - “RelWithDebInfo”:在发布版本中包含调试信息,以方便在发生问题时进行调试。
    - “MinSizeRel”:最小尺寸的发布版本,启用优化以减小可执行文件的大小。

  4. CMAKE_HOST_SYSTEM_PROCESSOR
    表示当前主机系统的处理器架构。

  5. CMAKE_INSTALL_PREFIX
    用于指定项目安装到系统上的根目录。在 CMake 中,CMAKE_INSTALL_PREFIX 变量的值通常用于指定项目构建后的文件安装到系统中的根目录路径。当你使用 install 命令安装文件时,可以使用这个变量来确定文件要安装到的目标位置。默认在Linux系统情况下,CMAKE_INSTALL_PREFIX 的值是 /usr/local,这意味着项目构建后的文件将会被安装到 /usr/local 目录下.
    一个示例:

    # 设置安装目录为 /opt/my_project
    set(CMAKE_INSTALL_PREFIX "/opt/my_project")# 安装文件到指定目录
    install(TARGETS my_program DESTINATION bin)
    install(FILES my_header.h DESTINATION include)

Cmake file 操作

  1. file(STRINGS MAKE_DIRECTORY)

Cmake string 操作

  1. string(FIND )

Cmake if 语法

Cmake中的条件语法最常见的是if语句。具体可以参考cmake的官网。这里贴个官网的图:
在这里插入图片描述

参考链接

  1. https://b23.tv/kVk5IcA
  2. https://cmake.org/cmake/help/latest/index.html
http://www.yayakq.cn/news/93361/

相关文章:

  • 摄影网站定位企业推广方式知名隐迅推
  • 网站开发产品经理目前有哪些网络营销方式
  • 网吧可以做网站吗深圳电子厂排名前十
  • 一些做设计素材的网站广西南宁网站建设哪家好
  • 太原做彩票网站公司网站建设汇报方案ppt模板
  • 网站开发公司官网wordpress被封锁了
  • 赤峰市哪里做网站网站建设的本质
  • 做网站的是不是程序员网络推广公司盈利模式
  • 网站设计的任务上海装修公司排名2021
  • 石狮住房和城乡建设局网站河南省建设工程一体化平台
  • 电子商城网站建设报告网站备案需要费用吗
  • 网页设计资料的网站外贸资讯平台
  • 郑州做网站华久科技怎么开店铺
  • 付费 视频 网站 怎么做企业数字展厅设成都企业展厅设计公司
  • 灵璧有做公司网站的吗seo推广优化方案
  • 常州网站建站公司徐州建设网站价格
  • 保定网站模板建站网络营销的工作岗位有哪些
  • 做动态图表的网站网上商城app开发
  • 普陀区网站建设公司企业微信网站开发公司
  • intitle:网站建设wordpress图片广告
  • 网站开发总结经验和教训网站建设与管理案例...
  • 京东客网站怎么做的公司网站怎么做关键字
  • 做新网站都需要准备什么易语言怎么做网站
  • 网站优化检测工具企业为什么要创新
  • 网站开发工作招聘专业零基础网站建设教学公司
  • 精品网站建设多少钱有什么推广产品的渠道
  • 广州小型企业网站建设wordpress询盘插件
  • 电子商务网站建设自建团队百度关键词价格查询
  • wordpress视频网站采集php做网站的公司有哪些
  • 一流的天津网站建设网站建设管理情况汇报