您的位置:首页 > 其它

CMakeLists多目录通用模板

2020-08-10 09:03 711 查看

以一个通用组织的工程(包含PCL,VTK,libLAS第三方库)为示例,具有含义从英语意思进行理解

工程目录结构 
├── shape 
│ ├── CMakeLists.txt 
│ ├── include 
│ │ ├── shape.h 
│ │ └── config.h 
│ └── src 
│ ├── shape.cpp 
│ └──  config.cpp 
├── CMakeLists.txt 
├── point 
│ ├── CMakeLists.txt 
│ ├── include 
│ │ └── point.h 
│ └── src 
│ └── point.cpp 
└── unit_test 
├── CMakeLists.txt 
└── main.cpp

  • 顶层CMakeList.txt
[code]cmake_minimum_required (VERSION 3.5 FATAL_ERROR)
project(shape)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g3 -rdynamic -Wall")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_BUILD_TYPE Debug)

find_package (BOOST REQUIRED)
find_package (tinyxml REQUIRED)
find_package (fmt REQUIRED)

include_directories (${INCLUDE_DIRS})

link_directories    (${LIBRARY_DIRS})
add_definitions     (${DEFINITIONS})

include_directories(${PROJECT_SOURCE_DIR}/)
link_directories(${PROJECT_BINARY_DIR}/libs)

set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/libs)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/libs)

add_subdirectory(shape)
add_subdirectory(point)
add_subdirectory(test)
  • shape目录
[code]project(shape)

set(srcs src/shape.cpp
src/config.cpp)

include_directories("include")

add_library(shape SHARED ${incs}  ${srcs})

target_link_libraries (shape ${LIBRARIES} ${LIBRARIES})
  • point 目录
[code]project(shape)

set(srcs src/point.cpp)

include_directories("include")

add_library(point SHARED ${incs}  ${srcs})

target_link_libraries (point ${LIBRARIES})
  • test 目录
[code]project(shape)

add_executable(unitest main.cpp)
target_link_libraries(unitest shape point)

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: