标准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 中改一点点如:

相关文章
相关标签/搜索