61 lines
1.9 KiB
CMake
61 lines
1.9 KiB
CMake
cmake_minimum_required(VERSION 3.30 FATAL_ERROR)
|
|
cmake_policy(VERSION 3.30)
|
|
|
|
project(c-template LANGUAGES C)
|
|
|
|
set(CMAKE_C_STANDARD 99)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
option(BUILD_TESTS "Build tests" OFF)
|
|
option(BUILD_DOCS "Build documentation" OFF)
|
|
option(DISABLE_LOGGING "Disables all logging" OFF)
|
|
option(DO_NOT_INCREASE_VERSION "Disable custom target that automatically increases version" OFF)
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
|
include(CheckCompileOptions)
|
|
include(FetchZlog)
|
|
include(FetchCargs)
|
|
|
|
if(BUILD_TESTS)
|
|
enable_testing()
|
|
include(FetchGoogleTest)
|
|
add_subdirectory(tests)
|
|
endif()
|
|
|
|
if(DISABLE_LOGGING)
|
|
message(STATUS "Disabling all logs")
|
|
add_compile_definitions("PLOG_DISABLE_LOGGING=1")
|
|
endif()
|
|
|
|
if(BUILD_DOCS)
|
|
message(STATUS "Building documentation")
|
|
add_subdirectory(docs)
|
|
endif()
|
|
|
|
add_executable(${PROJECT_NAME} src/main.c)
|
|
set_target_properties(
|
|
${PROJECT_NAME}
|
|
PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
|
|
|
if(NOT DO_NOT_INCREASE_VERSION)
|
|
add_custom_target(
|
|
run_versioning_script
|
|
COMMAND ${CMAKE_COMMAND} -E echo "$(date +%s)" > "${CMAKE_CURRENT_BINARY_DIR}/update_versioning_signal"
|
|
COMMAND ${PROJECT_SOURCE_DIR}/scripts/versioning.sh patch
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
COMMENT "Running versioning script")
|
|
add_dependencies(${PROJECT_NAME} run_versioning_script)
|
|
endif()
|
|
|
|
execute_process(COMMAND ${PROJECT_SOURCE_DIR}/scripts/versioning.sh print WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
OUTPUT_VARIABLE ${PROJECT_NAME}_VERSION)
|
|
|
|
message(STATUS "Building [${PROJECT_NAME}] version ${${PROJECT_NAME}_VERSION}")
|
|
target_compile_options(${PROJECT_NAME} PRIVATE "${COMPILE_FLAGS}")
|
|
target_link_options(${PROJECT_NAME} PRIVATE "${LINK_FLAGS}")
|
|
|
|
add_subdirectory(include)
|
|
add_subdirectory(src)
|