CMake使用范例
一、可执行程序范例
cmake_minimum_required(VERSION 3.11) //cmake的版本要求
set(CMAKE_BUILD_TYPE Release) //通过set可以指定一些变量值及类型
set(PROJECT_NAKE ePass3000GM) //指定工程名称
project(${PROJECT_NAKE}) //工程
FILE(GLOB SOURCE ${PROJECT_SOURCE_DIR}/src/*.cpp) //这里是c或者C++都可以
include_directories(${PROJECT_SOURCE_DIR}/include) //头文件放到include
link_directories(${PROJECT_SOURCE_DIR}/lib) //库文件放到lib里面
ADD_EXECUTABLE(${PROJECT_NAKE} ${SOURCE}) //最终生成的是库文件还是可执行文件在这里指定
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) //生成可执行程序的路径
target_link_libraries(${PROJECT_NAKE} -les_3000gm) //添加的库文件
二、动态库范例
cmake_minimum_required(VERSION 3.11)
set(CMAKE_BUILD_TYPE Release)
set(PROJECT_NAKE pam_ePass3000GM)
project(${PROJECT_NAKE})
FILE(GLOB SOURCE ${PROJECT_SOURCE_DIR}/src/*.c)
include_directories(${PROJECT_SOURCE_DIR}/include)
link_directories(${PROJECT_SOURCE_DIR}/lib)
add_library(${PROJECT_NAKE} SHARED ${SOURCE})
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
target_link_libraries(${PROJECT_NAKE} -les_3000gm)
三、生成文件路径及名称设置
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/../bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/../bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/../lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/../lib)
set(CMAKE_DEBUG_POSTFIX "_d")
set(CMAKE_RELEASE_POSTFIX "_r")
set_target_properties(${TARGET_NAME} PROPERTIES DEBUG_POSTFIX "_d")
set_target_properties(${TARGET_NAME} PROPERTIES RELEASE_POSTFIX "_r")
Demo
cmake_minimum_required(VERSION 3.5)
project(surveyProbe LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_definitions(-DSQLITE_HAS_CODEC)
#add_compile_definitions(MG_ENABLE_OPENSSL=1)
set(PROJECT_SOURCES
src/main.cpp
src/csettings.cpp
src/logfile.cpp
include/csettings.h
)
include_directories(${PROJECT_SOURCE_DIR}/include)
link_directories(${PROJECT_SOURCE_DIR}/lib/json)
link_directories(${PROJECT_SOURCE_DIR}/lib/sqlcipher)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
add_executable(surveyProbe ${PROJECT_SOURCES})
target_link_libraries(surveyProbe -ljsoncpp -lsqlcipher -lpthread -luuid)