cmake与make的区别及CMakeLists.txt文件编写

一、cmake与make的区别

make工具是一个自动化编译工具,它会根据Makefile中的规则进行批处理编译。当需要编译的文件较多时,使用make工具会大大提高效率。

但是,当项目较大时,编写Makefile也成为了一件复杂的事,因此就出现了cmake工具,cmake工具会根据CMakeLists.txt生成Makefile。

流程如下:
在这里插入图片描述

二、CMakeLists.txt文件编写

CMakeLists.txt文件的编写主要包括以下7个步骤:

#1. 指定cmake版本
cmake_minimum_required(VERSION 3.17)

#2. 指定项目的名称
PROJECT(demo)

#3. 指定C++标准和编译选项等
set(CMAKE_CXX_STANDARD 14)

#4. 指定源文件目录
set(SOURCE_FILES src)

#5. 指定头文件目录
INCLUDE_DIRECTORIES(include)

#6. 添加生成可执行文件需要的源文件
ADD_EXECUTABLE(${PROJECT_NAME} ${SOURCE_FILES})

#7. 添加可执行文件所需要的库文件
#用link_directories指定静态链接库目录和动态链接库目录 或者 用find_package和find_library得到库文件的绝对路径
TARGET_LINK_LIBRARIES(${PROJECT_NAME} pthread)
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编写一个用于编译静态库的CMakeLists.txt文件,你可以按照以下步骤进行操作: 1. 首先,创建一个新的文件夹,用于存放你的C++源代码和CMakeLists.txt文件。 2. 在该文件夹中,创建一个CMakeLists.txt文件,并打开它。 3. 在CMakeLists.txt文件中,使用`cmake_minimum_required`命令指定所需的CMake最低版本。例如: ``` cmake_minimum_required(VERSION 3.10) ``` 4. 使用`project`命令指定项目的名称和版本。例如: ``` project(MyLibrary VERSION 1.0) ``` 5. 使用`add_library`命令来定义你的静态库。该命令的语法如下: ``` add_library(<library_name> <library_type> <source_files>) ``` 其中,`<library_name>`是你的库的名称,`<library_type>`是库的类型(这里是STATIC,表示静态库),`<source_files>`是你的源代码文件列表。 例如,如果你的库名为`mylib`,源代码文件为`mylib.cpp`和`mylib.h`,则可以这样写: ``` add_library(mylib STATIC mylib.cpp mylib.h) ``` 6. 如果你的库依赖于其他库,可以使用`target_link_libraries`命令来指定这些依赖关系。例如: ``` target_link_libraries(mylib PUBLIC otherlib) ``` 这将使得`otherlib`库的头文件和链接库在使用`mylib`库时可见。 7. 最后,使用`install`命令来指定安装规则。例如: ``` install(TARGETS mylib DESTINATION lib) install(FILES mylib.h DESTINATION include) ``` 这将把编译好的静态库文件安装到`lib`目录下,将头文件安装到`include`目录下。 完成以上步骤后,你就可以使用CMake来生成你的静态库了。可以使用以下命令: ``` cmake . make ``` 这将在当前目录下生成静态库文件和相关的构建文件。 希望以上信息对你有所帮助!如果你有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值