標準cmake模板(將源文件作成庫)

 版權聲明:本文爲博主原創文章,未經博主容許不得轉載。    https://blog.csdn.net/qq_25254777/article/details/77989440
在多級目錄下,工程目錄的CMakeList.txt的模板,
1
  cmake_minimum_required( VERSION 2.8 )
project( guoguo )c++

# 設置用debug仍是release模式。debug容許斷點,而release更快
#set( CMAKE_BUILD_TYPE Debug )
set( CMAKE_BUILD_TYPE Release )多線程

# 設置編譯選項
# 容許c++11標準、O3優化、多線程。match選項可避免一些cpu上的問題
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -march=native -O3 -pthread" )函數

# 常見依賴庫:cv, eigen, pcl
find_package( OpenCV REQUIRED )
#find_package( Eigen3 REQUIRED )
#find_package( PCL 1.7 REQUIRED )優化

#include_directories(${PCL_INCLUDE_DIRS})
#link_directories(${PCL_LIBRARY_DIRS})
#add_definitions(${PCL_DEFINITIONS})ui

# 二進制文件輸出到bin
set( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin )
# 庫輸出到lib
set( LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib ).net

# 頭文件目錄
include_directories(
    ${PROJECT_SOURCE_DIR}/include
    )線程

# 源文件目錄
add_subdirectory( ${PROJECT_SOURCE_DIR}/src/ )
add_subdirectory( ${PROJECT_SOURCE_DIR}/experiment/ )  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
這樣就會將可執行文件放入bin文件夾,將產生的庫文件放入lib文件夾中,還要就是添加子目錄的時候,必定要保證目錄裏面繼續包含CMakeLists.txt,要否則會報錯。還有include_directories()必須加上,若是不加就會提示找不到頭文件。 
在src文件夾中存放的是源文件和CMakeLists.txt,同時你能夠在這個cmakelists.txt中進行設置,把源文件作成庫文件。debug

set(Lib_src hello.cpp)
add_library(libhello ${Lib_src})
set_target_properties(libhello PROPERTIES OUTPUT_NAME "hello")
1
2
3
最後一行是爲了將.a庫文件名字改爲.libhello的名字,若是不加這一句就會是liblibhello.a
那麼在你放main函數的.cpp文件,咱們暫時能夠把這個文件夾定義爲experience,那麼這個文件夾中就包含.cpp文件和cmakelists.txt文件,其中的cmakelists
1
2
add_executable(hello main.cpp)
target_link_libraries(hello libhello)
1
2
由於我這裏引用的庫文件,因此要包含
target_link_libraries(hello libhello)
1
2

固然咱們也能夠不引用庫文件,由於咱們手中擁有這它的頭文件和源文件,多麼質樸的東西,固然能夠直接使用啦。c++11

include_directories(${PROJECT_SOURCE_DIR}/include)blog

add_executable(hello main.cpp ${PROJECT_SOURCE_DIR}/src/hello.cpp) 1 2 3 固然加上頭文件的目錄啦,而後詳細的列好全部須要用到的.cpp文件的路徑。  這樣你就作好了。  固然若是你想生成動態庫文件只須要在src 中改一點點如:

相關文章
相關標籤/搜索