栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【无标题】Cmake的使用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【无标题】Cmake的使用

1.单目录单文件

在这里插入代码片
CMAKE_MINIMUM_REQUIRED(VERSION 3.10) #声明编译该代码所需的最小Cmake版本
PROJECT(demo1) ##要编译的工程的名字
ADD_EXECUTABLE(demo1 main.cpp)##demo1为生成可执行文件的名字为demo1.exe main.cpp为要编译的对象,文件依赖

2.单目录多文件

#AUX_SOURCE_DIRECTORY(dir VAR)
#发现一个目录下所有的源代码文件并将列表存储在一个变量中
#把当前目录下的所有源码文件名赋给变量DIR_HELLO_SRCS
AUX_SOURCE_DIRECTORY(./ DIR_SRCS)
ADD_EXECUTABLE(demo2 ${DIR_SRCS})

3.多目录多文件(源文件在顶层目录)
先写子目录下的CMakeLists.txt

#发现一个目录下所有的源代码文件并将列表存储在一个变量中
AUX_SOURCE_DIRECTORY(. DIR_LIB_SRCS)
#把子目录下主函数要调用的文件设置为静态库
ADD_LIBRARY(Mylib STATIC ${DIR_LIBSRCS})
#或者设置为动态库
ADD_LIBRARY(Mylib SHARED ${DIR_LIBSRCS})

接下来写顶层目录

CMAKE_MINIMUM_REQUIRED(VERSION 3.1)

PROJECT(demo3)
#添加子目录,即其他文件夹的名称
ADD_SUBDIRECTORY(./mylib)

AUX_SOURCE_DIRECTORY(./ DIR_SRCS)

ADD_EXECUTABLE(demo3  ${DIR_SRCS})
demo3为可执行文件名字 Mylib为生成的静态库名字 链接到可执行文件里面
TARGET_link_LIBRARIES(demo3 Mylib)

4.多目录多文件(标准 即源文件一个文件夹src 库文件一个文件夹mylib camke文件一个文件夹build )
在demo3基础上 在源文件夹内写CMakeLists.txt

#类似于stm32如果要加头文件,得点魔术棒增加头文件路径
#${PROJECT_SOURCE_DIR}表示根目录路径 可用.代替
#这里就表示库文件的路径
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/mylib)
AUX_SOURCE_DIRECTORY(./ DIR_SRCS)

ADD_EXECUTABLE(demo4 ${DIR_SRCS})

TARGET_link_LIBRARIES(demo4 Mylib)

在顶层文件写CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 3.10)

PROJECT(demo4)

ADD_SUBDIRECTORY(./mylib)
增加工程中的源文件路径
ADD_SUBDIRECTORY(./src)

然后在build文件下执行cmake
2.改进
在库文件CMakeLists里面加这么一句话

AUX_SOURCE_DIRECTORY(. DIR_LIB_SRCS)
#生成库文件Mylib.a文件放置的路径
# ${PROJECT_BINARY_DIR}在build下执行cmake,所以就为build文件路径
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
ADD_LIBRARY(Mylib STATIC ${DIR_LIBSRCS})

在源文件CMakeLists里面加这么一句话

INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/mylib)

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

AUX_SOURCE_DIRECTORY(./ DIR_SRCS)

ADD_EXECUTABLE(demo4 ${DIR_SRCS})

TARGET_link_LIBRARIES(demo4 Mylib)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738059.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号