仓库提交练习
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

54 lines
1.5 KiB

cmake_minimum_required(VERSION 3.10)
option(A_BUILD_MAIN_AS_STATIC_LIB "Build as a static library instead of an executable" OFF)
get_filename_component(TARGET_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
set(MAIN_SRCS
main.c
)
if(A_BUILD_MAIN_AS_STATIC_LIB)
add_library(${TARGET_NAME} STATIC ${MAIN_SRCS})
else()
add_executable(${TARGET_NAME} ${MAIN_SRCS})
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
target_compile_definitions(${TARGET_NAME} PRIVATE DEBUG)
endif()
if(A_BUILD_MAIN_AS_STATIC_LIB)
set_target_properties(${TARGET_NAME} PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/output
)
else()
set_target_properties(${TARGET_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/output
)
endif()
target_include_directories(${TARGET_NAME}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
)
if(DEFINED GLOBAL_ENABLED_MODULES AND NOT GLOBAL_ENABLED_MODULES STREQUAL "")
message(STATUS "[Main] Linking modules: ${GLOBAL_ENABLED_MODULES}")
target_link_libraries(${TARGET_NAME} PUBLIC ${GLOBAL_ENABLED_MODULES})
else()
message(STATUS "[Main] No additional modules linked.")
endif()
if(DEFINED GLOBAL_ENABLED_MACROS AND NOT GLOBAL_ENABLED_MACROS STREQUAL "")
message(STATUS "[Main] Defining macros: ${GLOBAL_ENABLED_MACROS}")
target_compile_definitions(${TARGET_NAME} PRIVATE ${GLOBAL_ENABLED_MACROS})
endif()
target_compile_options(${TARGET_NAME}
PRIVATE
-Wall
-Werror
$<$<CONFIG:Debug>:-g -O0>
$<$<CONFIG:Release>:-O2>
)