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/)
其中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/目录下的文件
  • 10
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
CMakeLists.txt中指定添加头文件路径的方法有两种。一种是使用include_directories函数,另一种是直接在CMakeLists.txt文件中写明路径。 使用include_directories函数的方法是在CMakeLists.txt文件中调用include_directories函数,并将需要添加头文件路径作为参数传入。例如,可以在函数中添加如下代码来指定头文件路径: include_directories(路径1 路径2 ...) 另一种方法是直接在CMakeLists.txt文件中写明路径。你可以在CMakeLists.txt文件中找到以下形式的代码来指定头文件路径: #include_directories(路径) 这两种方法都可以用来指定头文件路径,具体选择哪一种方法取决于你的项目需求和个人喜好。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [CMake学习-添加头文件路径路径](https://blog.csdn.net/snail_hunan/article/details/70238478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [CMakeList添加指定路径头文件](https://blog.csdn.net/weixin_43466192/article/details/120240954)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

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

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

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

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

打赏作者

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

抵扣说明:

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

余额充值