Cmake 学习笔记

这里写自定义目录标题

主要的CMakeLists.txt内容

工程一级目录的配置文件
在这里插入图片描述

在一个工程中,一般最外层(也就是和src、build同一级目录)有一个总的CMakeLists文件,然后低级目录比如src里面也有一个cmakelist文件。编译时,每个cmakelist都会产生一个Makefile文件,一般存放在build文件夹下。LINUX中文件都是通过路径进行访问的

cmake_minimum_required(VERSION 3.16)
PROJECT(NEWHELLO)
ADD_SUBDIRECTORY(src) # 指定编译生成的中间文件和目标文件的存放位置

工程二级目录的配置文件(也就是src中的配置文件)

cmake_minimum_required(VERSION 3.16)
ADD_EXECUTABLE(main main.cpp)#生成可执行文件

#信息输出语句 ${}代表对cmake变量的引用
MESSAGE(STATUS "THIS IS SOURCE DIR " ${PROJECT_SOURCE_DIR})
MESSAGE(STATUS "THIS IS BINARY DIR " ${PROJECT_BINARY_DIR})

MESSAGE(STATUS "THIS IS CMAKE_CURRENT_SOURCE_DIR " ${CMAKE_CURRENT_SOURCE_DIR})
MESSAGE(STATUS "THIS IS CMAKE_CURRENT_BINARY_DIR " ${CMAKE_CURRENT_BINARY_DIR})

#头文件 .h  查找
INCLUDE_DIRECTORIES(/usr/include/hello)

#指定生成的可知性文件的存放位置 仅有可执行文件
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

#链接到动态库
#TARGET_LINK_LIBRARIES(main hello)

#链接到静态库
TARGET_LINK_LIBRARIES(main libhello.a)

SET(LIBHELLO_SRC hello.cpp)  #显式定义变量
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) #设置生成的可执行文件和库文件的存放位置
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/Lib)


ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) #构建动态库

ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC})#构建静态库
SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello") #同时构建同名的动态库和静态库

#ADD_EXECUTABLE(hello hello.cpp)
SET_TARGET_PROPERTIES(hello PROPERTIES VERSION 1.2 SOVERSION 1) #设置动态库的版本问题


#安装到系统  都是相对路径 include/hello    lib
INSTALL(TARGETS hello hello_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) #安装时的库文件设置

INSTALL(FILES hello.h DESTINATION include/hello)#安装时的头文件设置

安装时的指令:
cmake -DCMAKE_INSTALL_PREFIX=/tmp/t2/usr …
make
install
则上面的两个相对路径就是在usr下的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值