CMake模块构建工程
This commit is contained in:
+38
-16
@@ -1,21 +1,43 @@
|
||||
# CMake最低版本
|
||||
cmake_minimum_required(VERSION 3.21)
|
||||
cmake_minimum_required(VERSION 3.22)
|
||||
|
||||
# 工程名、版本号、工程描述
|
||||
project(Motion
|
||||
VERSION 0.1
|
||||
DESCRIPTION "Test")
|
||||
project(Motion)
|
||||
|
||||
# C/C++ 标准版本
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
# 开启编译数据库导出(强制开启,不被缓存覆盖)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE INTERNAL "")
|
||||
|
||||
# 指定在当前目录或以下目录下通过命令(如 add_executable() )链接稍后创建的任何目标时要使用的库或标志
|
||||
LINK_LIBRARIES(m)
|
||||
# 针对 GCC 编译器添加 UTF-8 编码选项
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") # 仅对 GCC 生效
|
||||
# 添加 C++ 编译选项
|
||||
add_compile_options(-finput-charset=UTF-8)
|
||||
add_compile_options(-fexec-charset=UTF-8)
|
||||
|
||||
# 若需要支持 C 语言,补充 C 编译选项
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:C>:-finput-charset=UTF-8>)
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:C>:-fexec-charset=UTF-8>)
|
||||
endif()
|
||||
|
||||
# 工程源文件
|
||||
add_executable(${PROJECT_NAME}
|
||||
./App/Src/main.cpp)
|
||||
if(WIN32)
|
||||
# Windows平台特定的设置
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/$<CONFIGURATION>/WIN32")
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/$<CONFIGURATION>/WIN32")
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/$<CONFIGURATION>/WIN32/static_lib")
|
||||
elseif(APPLE)
|
||||
# Apple平台特定的设置
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/$<CONFIGURATION>/APPLE")
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/$<CONFIGURATION>/APPLE")
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/$<CONFIGURATION>/APPLE/static_lib")
|
||||
elseif(UNIX) # 注意:Linux和macOS都满足UNIX为TRUE,所以通常先判断APPLE
|
||||
# Linux或其他类Unix系统的设置
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/$<CONFIGURATION>/UNIX")
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/$<CONFIGURATION>/UNIX")
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/$<CONFIGURATION>/UNIX/static_lib")
|
||||
endif()
|
||||
|
||||
# 工程包含目录
|
||||
include_directories(./Inc)
|
||||
|
||||
set(CMAKE_C_STANDARD 17)
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
add_subdirectory(${CMAKE_SOURCE_DIR}/MotionLib)
|
||||
add_subdirectory(${CMAKE_SOURCE_DIR}/App)
|
||||
Reference in New Issue
Block a user