add_library,target_link_libraries,set_target_properties,target_link_libraries使用聯繫

轉自: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)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章