首页 > 其他分享 >CMakeLists的编写注意

CMakeLists的编写注意

时间:2024-02-23 16:47:54浏览次数:26  
标签:文件 CMakeLists CMake directories executable add link 注意 编写

`add_executable(${CMAKE_PROJECT_NAME})`的位置对于`link_directories`命令的影响可能与项目的目录结构和依赖项的设置有关。

一般来说,`link_directories`命令应该在`add_executable`命令之前调用,以确保在链接时能够正确找到所需的库文件。如果在`add_executable`之后调用`link_directories`,可能会导致链接过程中找不到所需的库文件而失败。

请确保在调用`add_executable`之前,所有的库文件都已经正确地链接到了工程中,以确保编译过程能够顺利进行。

在CMake中,命令的执行顺序非常重要,因为它们会影响构建系统生成的Makefile或其他构建系统的配置文件。以下是常见的CMake命令的执行顺序及其作用:

1. **cmake_minimum_required**:指定要求的最低CMake版本。通常作为CMake文件的第一条命令。

2. **project**:定义项目名称和版本号。也是一个常见的起始命令,用于定义项目的基本属性。

3. **find_package**:查找并加载外部依赖的软件包。这通常包括在项目中使用的第三方库或工具。

4. **include_directories**:指定包含目录,用于编译过程中查找头文件。

5. **link_directories**:指定链接库的目录,用于编译过程中查找库文件。

6. **add_compile_options**:添加编译选项,如警告级别、优化等。

7. **add_definitions**:添加预处理器定义。

8. **add_subdirectory**:添加子目录以进行构建。

9. **add_executable**:定义可执行文件。通常在这之前会有一些源文件被列举出来。

10. **add_library**:定义库文件。同样需要列举源文件。

11. **target_include_directories**:为目标(例如可执行文件或库)指定包含目录。

12. **target_link_libraries**:为目标指定链接的库文件。

13. **install**:定义安装规则,将生成的文件安装到指定位置。

14. **configure_file**:用于在构建期间生成文件副本。

这些命令的执行顺序可能会有所不同,具体取决于项目的结构和需求。通常,应该在确保正确性的前提下尽可能将相关的命令放在一起,以提高CMake脚本的可读性和维护性。

标签:文件,CMakeLists,CMake,directories,executable,add,link,注意,编写
From: https://www.cnblogs.com/whcjob/p/18029875

相关文章

  • 在mapper.xml中编写sql规则和常见函数写法
    在mapper.xml中编写规则和常见函数写法目录在mapper.xml中编写规则和常见函数写法service传到mapper.xml常见查询语句的写法group_concatcasewhenelseendCOALESCEDUAL模糊查询写法关于where1=1xml中不能存在的特殊字符——特殊转义或<![CDATA[]]>sql编写的一些......
  • c++ 通过一个临时的空的智能指针(裸指针),交换两个智能指针(裸指针)的值,注意是交换值!!!!
    #include<iostream>#include<memory>usingnamespacestd;structParenTask//父亲{stringname{};};typedefshared_ptr<ParenTask>ParenTaskPtr;structSubTask:ParenTask//孩子{intuid{};};typedefshared_ptr<SubTask&g......
  • html四边形的的框怎么编写,html知识点之利用css四边形切角并且加上边框
    前言这几个月做了很多前端工作,其中一个需求还是蛮头疼,UI给的图上面的四边形是一个带斜边的,直接用背景图可以实现,但是会出现各种布局的问题,比如内容太大了,边框不会跟着扩大,废话不多说,这里写一些如何利用css话四边形带有斜边,并且给斜边加边框,在这之前,先简单说一下需要用到的函数li......
  • stm32 中断处理函数注意事项
    一前记最近在公司的一个项目中碰到一个解决了定位很久的bug,bug找到的时候发现犯了很低级的错误——在中断处理函数中调用了printf函数,因为中断处理函数的调用了不可重入函数,导致接收到莫名其妙的数据。后面通过定位才发现这个是因为里面调用了不可重入函数导致的。那......
  • 【触想智能】工业平板知识分享|选购工业平板电脑需要注意的7大事项
    工业平板电脑是一种将显示器、工控主板、触摸屏和其他电子设备整合在一起的电子产品。它广泛应用于工业控制和自动化领域。在购买工业平板电脑时,需要考虑一些关键性因素,以确保工业平板电脑是安全可靠、运行稳定的。那么我们在购买工业平板电脑的时候,应该注意哪些问题呢?......
  • 【C++】编写一个具有老式风格接口的函数,其原型如下:int reduce(long arr[], int n)。实
    #include<iostream>#include<string>usingnamespacestd;intreduce(longarr[],intn){sort(arr,arr+n);autostr=unique(arr,arr+n);returnstr-arr;}intmain(){longarr[10]={15,8,5,6,11,11,6,6,198,50};......
  • 国产USB 转串口芯片CH9102替换CP2102 需要改动什么以及注意事项说明
    CH9102是一个USB总线的转接芯片,实现USB转异步串口。提供了常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备或者MCU直接升级到USB总线。CH9102与CP2102可实现pin2pin兼容,可以在不更改硬件设计的前提下实现不同型号间快速切换与产品应用。CH9102系列......
  • 怎样建设供应商文件分发平台?这三点陷阱需注意
    供应商在市场经济中是不可或缺的角色,供应商作为重要的环节,串联起从商品生产到消费者的链路,而供应商特殊的点在于供应商并不能单独存在,相反它与上下游关系非常紧密。上游供应商是指向供应商提供原材料、零部件或其他支持的企业或组织。上游供应商通常负责生产或制造商品所需的原......
  • seafile升级最新版注意事项(11.05版本为例)
    seafile升级最新版注意事项(11.05版本为例)笔者以当前最新版11.05为例,以下内容为亲测‍1、docker-compose.yml文件不能使用seafileltd/seafile-mc:latest,得用seafileltd/seafile-mc:11.05,具体原因不明,seafileltd/seafile-mc:latest现在是8.07的版本2、升级后会......
  • seafile升级最新版注意事项(11.05版本为例)
    seafile升级最新版注意事项(11.05版本为例)笔者以当前最新版11.05为例,以下内容为亲测‍1、docker-compose.yml文件不能使用seafileltd/seafile-mc:latest,得用seafileltd/seafile-mc:11.05,具体原因不明,seafileltd/seafile-mc:latest现在是8.07的版本2、升级后会......