cmake 標準完整模板

2020-08-11 18:22:02
#CMake最低版本號要求
cmake_minimum_required(VERSION 2.8)

#指定專案名稱
project(openailab_four_monitor)

#指定工程需要用到的一些庫
set(ENV{PKG_CONFIG_PATH} /usr/local/AID/pkgconfig)
find_package(PkgConfig)
pkg_search_module(BLADECV REQUIRED bladecv)
pkg_search_module(GTK REQUIRED gtk±3.0)
#find_package(PkgConfig)
#find_package(Qt5 REQUIRED Widgets)
#find_package(Qt5 REQUIRED Core)
#find_package(Qt5 REQUIRED Gui)

#包含c++11特性
set(CMAKE_CXX_FLAGS 「${CMAKE_CXX_FLAGS} -std=c++11 -g」)
#指定版本資訊
set(CMAKE_SYSTEM_VERSION 1)

#若是需要指定編譯器路徑
#set(CROSS_TOOLCHAIN_PREFIX 「/path/arm-linux-」)
#指定編譯器
#set(CMAKE_C_COMPILER   「KaTeX parse error: Expected 'EOF', got '#' at position 31: …N_PREFIX}gcc") #̲set(CMAKE_CXX_C…{CROSS_TOOLCHAIN_PREFIX}g++」)

#使用預設路徑的g++指定編譯器  
set(CMAKE_CXX_COMPILER 「g++」)

#指定編譯選項
set(CMAKE_BUILD_TYPE Debug )

#指定編譯目錄
set(PROJECT_BINARY_DIR ${PROJECT_SOURCE_DIR}/build)

#新增子目錄,這樣進入原始碼檔案src目錄可以繼續構建  
#add_subdirectory(${PROJECT_SOURCE_DIR}/src)

#查詢當前目錄下的所有原始檔,
#並將名稱儲存到DIR_LIB_SRCS目錄
#aux_source_directory(. DIR_LIB_SRCS)

#指定標頭檔案目錄,PROJECT_SOURCE_DIR爲工程的根目錄  
include_directories(
${PROJECT_SOURCE_DIR}/include
/usr/local/AID
${BLADECV_INCLUDE_DIRS}
${GTK_INCLUDE_DIRS}
)

#新增需要鏈接的庫檔案目錄
link_directories(
/usr/lib64/
${BLADECV_LIBRARY_DIRS}
${GTK_LIBRARY_DIRS}
)

#新增編譯參數和橫定義
#option(USE_BLADECV 「bladecv」 ON)
#if(USE_BLADECV)
#add_definitions(-DBLADECV)
#endif()

#設定編譯選項(會將gcc g++全部加上)
#add_compile_options(-g -std=c++11)
add_compile_options(-fPIC)

#指定可執行檔案的輸出目錄,輸出到bin下面 下麪  
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

#生成動態庫    
#add_library(shared_demo SHARED demo.cpp -lrtspclient -lrockchip_rga -lrockchip_mpp -ldrm -lpthread
#-lbcv -lgtk-3 -lrtspclient)

#設定庫輸出名爲 shared => libshared.so  
#set_target_properties(shared_demo PROPERTIES OUTPUT_NAME 「shared」)

#生成靜態庫  
#add_library(static_demo STATIC demo.cpp -lrtspclient -lrockchip_rga -lrockchip_mpp -ldrm -lpthread
#-lbcv -lgtk-3 -lrtspclient)  
#設定輸庫出名爲 static => libstatic.a  
#set_target_properties(static_demo PROPERTIES OUTPUT_NAME 「static」)

#指定庫檔案輸出路徑  
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

#在指定目錄下查詢庫,並儲存在LIBPATH變數中
#find_library(LIBPATHS  shared ${PROJECT_SOURCE_DIR}/lib /usr/lib64)

#指定生成目標
add_executable(demo demo.cpp)

#鏈接共用庫
target_link_libraries(demo -lrtspclient -lrockchip_rga -lrockchip_mpp -ldrm -lpthread
-lbcv -lgtk-3 -lrtspclient ${BLADECV_LDFLAGS} ${GTK_LDFLAGS})