您的位置:首页 > 运维架构

add_library,target_link_libraries,set_target_properties,target_link_libraries使用联系

2018-01-24 10:46 477 查看
转自:http://blog.csdn.net/michaelhan3/article/details/69568362

先列出我的CmakeLists.txt

注意,在CmakeLists.txt 里,注释用的是#

project(Camera_sugan)         #工程名字

cmake_minimum_required(VERSION 2.6)    #编译最低cmake版本

set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )   #设置c++编译器

find_package(OpenCV REQUIRED)    #在整个电脑上找opencv包

include_directories(                                 #包含头文件路径

    ./include/inudev/

    ./src/

)

set(SRC_LISTS                                          #将所有的源文件列为一个集合,集合名字叫做SRC_LISTS 

    ./src/inuitive.cpp

    ./src/runCamera_Qfeeltech.cpp

)

add_library(libsugan ${SRC_LISTS})    #将集合里的所有的源文件生成一个静态库,该静态库的名字libsugan,注意,在整个CmakeLists里都要用libsugan这个

                                                                        #名字来代替之前那个集合生成的库。

target_link_libraries(libsugan                  #链接静态库需要的依赖库

    ${OpenCV_LIBS}

    ${PROJECT_SOURCE_DIR}/lib/libCommonUtilities.so

    ${PROJECT_SOURCE_DIR}/lib/libInuStreams.so

)
#到此为止就在程序中生成了一个名字为libsugan的静态库,但是我们知道Linux下对库的存储格式是lib+name.a,所以我们生成的静态库名字为libsugan,那么

#存储出来的结果就是liblibsugan.a,看着很别扭,为了大众点,我们用下面这句,保证了存储出来的静态库叫做libsugan.a,

#但是请千万注意,在整个CmakeLists.txt里

#如果想链接生成的这个库必须使用    “add_library(libsugan ${SRC_LISTS})”指明的名字。

set_target_properties(libsugan PROPERTIES OUTPUT_NAME "sugan")

add_executable(demo ./src/main.cpp)

target_link_libraries(demo libsugan)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐