目录
一、项目级组织(不含库文件)
1.1 项目结构(未生成执行文件)
1.2 CMakeLists源码
CMakeLists.txt
cmake_minimum_required(VERSION 3.1)
project(test)
add_subdirectory(src)
src/CMakeLists.txt
aux_source_directory(. SRC_LIST)
include_directories(../include)
add_executable(main ${SRC_LIST})
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
二、动态库和静态库
2.1 项目结构(已生成库文件)
2.2 CMakeList.txt源码
CMakeLists.txt
cmake_minimum_required(VERSION 3.1)
project(test4)
set(SRC_LIST ${PROJECT_SOURCE_DIR}/func/Func1.cpp)
add_library(func_shared SHARED ${SRC_LIST})
add_library(func_static STATIC ${SRC_LIST})
set_target_properties(func_shared PROPERTIES OUTPUT_NAME "Func1")
set_target_properties(func_static PROPERTIES OUTPUT_NAME "Func1")
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
三、项目级组织(含库文件)
3.1 项目结构
3.2 CMakeLists 源代码
CMakeLists.txt
cmake_minimum_required(VERSION 3.1)
project(test3)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -O2")
add_compile_options(-std=c++11 -g -Wall -O2)
add_subdirectory(lib)
add_subdirectory(src)
lib/CMakeLists.txt
set(LIB_SRC func1.cpp)
include_directories(${PROJECT_SOURCE_DIR}/include)
#动态库
#add_library(func SHARED ${LIB_SRC})
#静态库
add_library(func STATIC ${LIB_SRC})
set_target_properties(func PROPERTIES OUTPUT_NAME "func")
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
src/CMakeLists.txt
set(SRC_LIST main.cpp)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
include_directories(${PROJECT_SOURCE_DIR}/include)
#动态库
#link_directories(/usr/local/lib )
#静态库
link_directories(${PROJECT_SOURCE_DIR}/lib)
#库文件
link_libraries(func)
add_executable(main ${SRC_LIST})
四、参考
CMake语法详解_shawn·xiao的博客-CSDN博客_cmake语法