前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cmake Tips

cmake Tips

原创
作者头像
yzh
修改2020-08-17 10:08:37
8550
修改2020-08-17 10:08:37
举报
文章被收录于专栏:YZh学习记录YZh学习记录

结合最近cmake的运用,对cmake的使用做简要总结。主要是关键词,编译思路的理解。

1. cmake编译源码生成可执行文件

思路:

(1) 添加第三方库,链接对应头文件。以opencv为例

代码语言:javascript
复制
set(OpenCV_PATH ${PROJECT_SOURCE_DIR}/../3rdParty/opencv430)
set(OpenCV_INCLUDE_DIRS ${OpenCV_PATH}/include/opencv4
                        ${OpenCV_PATH}/include/opencv4/opencv2)
set(OpenCV_LIBS ${OpenCV_PATH}/lib/libopencv_world.so)
include_directories(${OpenCV_INCLUDE_DIRS})
#最后表示把链接对应的头文件

(2)查找本项目头文件:注意如果头文件包含二级目录,应记得把所有头文件包进来

代码语言:javascript
复制
set(EPCV_INCLUDES ${PROJECT_SOURCE_DIR}/../include
                  ${PROJECT_SOURCE_DIR}/../include/common
                  ${PROJECT_SOURCE_DIR}/../include/epcv_engine)
include_directories(${EPCV_INCLUDES})

(3) 查找源文件:注意如果头文件包含二级目录,应记得把所有头文件包进来

代码语言:javascript
复制
#找到src文件
file(GLOB EPCV_TWO_DIM ${PROJECT_SOURCE_DIR}/../src/epcv_traffic_sign_classifier.cpp
                        ${PROJECT_SOURCE_DIR}/../src/epcv_engine/epcv_traffic_sign_classifier_engine.cpp)

(4)生成可执行文件

代码语言:javascript
复制
#根据src文件生成可执行文件
add_executable(demo_traffic_sign_classifier demo_traffic_sign_classifier.cpp ${EPCV_TWO_DIM} ${SAMPLES_COMMON_SOURCES_FILE})

(5)链接相关第三方库

代码语言:javascript
复制
#链接库文件
target_link_libraries(demo_traffic_sign_classifier  ${OpenCV_LIBS} ${TRTLIBS} ${CUDA_LIBRARIES})

2. cmake 链接动态库生成可执行文件

思路:

(1) 添加第三方库,链接对应头文件(同上)

(2)查找本项目头文件(同上)

(3) 查找已经编译生成的库文件(这里相当于用库文件代替源码)

代码语言:javascript
复制
file(GLOB TRAFFIC_LIBS ${PROJECT_SOURCE_DIR}/../lib/*.so)

(4)生成可执行文件

代码语言:javascript
复制
add_executable(demo_traffic_sign_classifier demo_traffic_sign_classifier.cpp  ${SAMPLES_COMMON_SOURCES_FILE})

(5)链接相关第三方库

代码语言:javascript
复制
#链接库文件
target_link_libraries(demo_traffic_sign_classifier  ${TRAFFIC_LIBS} ${OpenCV_LIBS} ${TRTLIBS} ${CUDA_LIBRARIES})

3. 将源文件编译成动态库

(1) 添加第三方库,链接对应头文件(同上)

(2)查找本项目头文件(同上)

(3)设置生成库的输出路径

代码语言:javascript
复制
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

(4)编译生成库文件

代码语言:javascript
复制
add_library(${LIB_NAME} SHARED ${SOURCE_FILES_TWO} ${SAMPLES_COMMON_SOURCES_FILE})

(5)链接依赖库

代码语言:javascript
复制
target_link_libraries(${LIB_NAME} ${OpenCV_LIBS} ${TRTLIBS} ${CUDA_LIBRARIES})

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. cmake编译源码生成可执行文件
    • (1) 添加第三方库,链接对应头文件。以opencv为例
      • (2)查找本项目头文件:注意如果头文件包含二级目录,应记得把所有头文件包进来
        • (3) 查找源文件:注意如果头文件包含二级目录,应记得把所有头文件包进来
          • (4)生成可执行文件
            • (5)链接相关第三方库
            • 2. cmake 链接动态库生成可执行文件
              • (1) 添加第三方库,链接对应头文件(同上)
                • (2)查找本项目头文件(同上)
                  • (3) 查找已经编译生成的库文件(这里相当于用库文件代替源码)
                    • (4)生成可执行文件
                      • (5)链接相关第三方库
                      • 3. 将源文件编译成动态库
                        • (1) 添加第三方库,链接对应头文件(同上)
                          • (2)查找本项目头文件(同上)
                            • (3)设置生成库的输出路径
                              • (4)编译生成库文件
                                • (5)链接依赖库
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档