CMakeList添加指定路径的库和头文件

cmakelist会去系统默认的路径加载头文件和库文件,头文件:/usr/include/,/usr/local/include,库文件:/usr/lib,/usr/local/lib。

如果想要在其他路径,添加需要提前指定。

1.头文件

include_directories(
    ./include/webrtc
)

这里是添加相对CMakeList.txt同级目录的include下的webrtc路径。相对路径是以CMakeList.txt为参考的,因为cmake处理的是CMakeList.txt文件。
然后在.h文件里即可添加。

2.库文件

2.1.先添加库目录
link_directories(${CMAKE_SOURCE_DIR}/thirdparty/lib/ ${CMAKE_SOURCE_DIR}/lib/)
在这里添加的路径其优先级是高于/usr/下的系统路径的
其中CMAKE_SOURCE_DIR变量是指CMakeList.txt所在的目录。CMake 2.8.0 以下的版本,加载动态链接库可以使用相对路径,但2.8.0以上需要使用绝对路径。
2.2.再添加库
如果已经添加了库路径,这里这还是加载不到,可能因为没有软链接关系,并不能够直接添加一个动态库,而是要给它设置软链接。

target_link_libraries(
    ${PROJECT_NAME}
    libwebrtc.a
    # webrtc #另一种写法
    libshm.so
    # shm #另一种写法
)

在cmakelist.txt的语法中,libgio-2.0.so.0.7200.4,就是gio-2.0,因为它会把lib和.so之间作为有效库名称。但加入路径后就不会这样判定了,因此如果想添加libgio-2.0.so.0.7200.4,可以写成 ${CMAKE_SOURCE_DIR}/lib/libgio-2.0.so.0.7200.4

3.批量添加库

file(GLOB_RECURSE ffmpeg_LIB "thirdPart/ffmpeg/lib/*.so")
target_link_libraries(${PROJECT_NAME}
{
${ffmpeg_LIB}
}

4.添加cpp文件

file(GLOB_RECURSE SOURCES "./*.cpp")  #当前目录及其子目录的所有.cpp文件,并将它添加到SOURCES中
file(GLOB SOURCES_VIDEO "video/*.cpp") #video目录下的.cpp文件,不递归其子目录
add_executable(${PROJECT_NAME}
    D_main.cpp
    ${SOURCES}
    # ${SOURCES_VIDEO}
)
#file(GLOB_RECURSE SOURCES "*.cpp" "*.cxx") 添加多个

但是这样会存在一个问题,比如在当前文件夹里创建build,也会遍历生成在这个文件夹里的文件,这时可能会出对象重复定义的问题,比如main函数重复定义。
因此要除去build函数的路径。

list(FILTER SOURCES EXCLUDE REGEX "/build/.*")  #排除SOURCES变量中/build/目录下的文件
#查找当前目录下的所有源文件
#并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
add_executable(Demo ${DIR_SRCS})

增加子目录的cmakelists.txt编译

//这样它就会去xrtc去寻找cmakelists.txt文件,并且执行它
add_subdirectory("./xrtc")

增加日志

message(STATUS "==========")

cmake
Command ‘cmake’ not found, but can be installed with:
sudo snap install cmake # version 3.30.1, or
sudo apt install cmake # version 3.22.1-1ubuntu1.22.04.2
See ‘snap info cmake’ for additional versions.

cmake安装
https://cmake.org/download/
./bootstrap
make -j10
sudo make install

make VERBOSE=1 //编译时打印更详细信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

、、、、南山小雨、、、、

分享对你有帮助,打赏一下吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值