Initial commit
This commit is contained in:
67
cmake/Common.cmake
Normal file
67
cmake/Common.cmake
Normal file
@@ -0,0 +1,67 @@
|
||||
#
|
||||
# 全局变量、路径、日志、工具函数
|
||||
#
|
||||
|
||||
# 日志宏
|
||||
macro(DEPLOY_MSG MSG)
|
||||
message(STATUS "[DEPLOY] ${MSG}")
|
||||
endmacro()
|
||||
|
||||
# 校验 root 权限(系统包/系统目录需要)
|
||||
function(CHECK_ROOT)
|
||||
execute_process(
|
||||
COMMAND id -u
|
||||
OUTPUT_VARIABLE CURRENT_UID
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
if(NOT CURRENT_UID STREQUAL "0")
|
||||
message(FATAL_ERROR "Please run cmake/make with root privileges!")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# ===================== 编译器自动检测&安装 =====================
|
||||
function(CheckAndInstallCompiler)
|
||||
DEPLOY_MSG("Checking GCC/G++ compiler...")
|
||||
|
||||
# 查找 gcc g++
|
||||
find_program(GCC_EXEC gcc)
|
||||
find_program(GXX_EXEC g++)
|
||||
|
||||
if(NOT GCC_EXEC OR NOT GXX_EXEC)
|
||||
DEPLOY_MSG("GCC/G++ not found, start installing via dnf...")
|
||||
CHECK_ROOT()
|
||||
|
||||
# dnf 安装 gcc gcc-c++
|
||||
execute_process(
|
||||
COMMAND dnf install -y gcc gcc-c++
|
||||
RESULT_VARIABLE COMP_RET
|
||||
OUTPUT_VARIABLE COMP_OUT
|
||||
ERROR_VARIABLE COMP_ERR
|
||||
)
|
||||
|
||||
if(NOT COMP_RET EQUAL 0)
|
||||
message(FATAL_ERROR "Failed to install GCC/G++: ${COMP_ERR}")
|
||||
endif()
|
||||
|
||||
DEPLOY_MSG("GCC/G++ installed successfully")
|
||||
|
||||
# 重新刷新程序查找,让CMake识别新安装的编译器
|
||||
find_program(GCC_EXEC gcc REQUIRED)
|
||||
find_program(GXX_EXEC g++ REQUIRED)
|
||||
else()
|
||||
DEPLOY_MSG("Found compiler: ${GCC_EXEC}, ${GXX_EXEC}")
|
||||
endif()
|
||||
|
||||
# 赋值给全局 CMake 编译器变量
|
||||
set(CMAKE_C_COMPILER ${GCC_EXEC} CACHE FILEPATH "C compiler" FORCE)
|
||||
set(CMAKE_CXX_COMPILER ${GXX_EXEC} CACHE FILEPATH "CXX compiler" FORCE)
|
||||
endfunction()
|
||||
|
||||
# 统一安装路径拼接
|
||||
function(SET_INSTALL_PATH NAME VER OUT_PATH)
|
||||
set(${OUT_PATH} "${INSTALL_ROOT}/${NAME}/${VER}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# 基础编译参数
|
||||
set(CMAKE_C_FLAGS "-O2" CACHE STRING "C flags")
|
||||
set(CMAKE_CXX_FLAGS "-O2" CACHE STRING "C++ flags")
|
||||
Reference in New Issue
Block a user