71 lines
2.0 KiB
CMake
71 lines
2.0 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
|
|
project(miniboinc
|
|
VERSION 0.1.0
|
|
LANGUAGES C
|
|
)
|
|
|
|
set(CMAKE_C_STANDARD 23)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
set(CMAKE_C_EXTENSIONS OFF)
|
|
|
|
# ---------------------------------------------------------
|
|
# Output directories
|
|
# ---------------------------------------------------------
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
|
|
|
foreach(OUTPUTCONFIG DEBUG RELEASE RELWITHDEBINFO MINSIZEREL)
|
|
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG_UPPER)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${CMAKE_BINARY_DIR}/bin)
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${CMAKE_BINARY_DIR}/lib)
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${CMAKE_BINARY_DIR}/lib)
|
|
endforeach()
|
|
|
|
# Common
|
|
file(GLOB_RECURSE COMMON_SRC CONFIGURE_DEPENDS src/common/*.c)
|
|
add_library(common STATIC ${COMMON_SRC})
|
|
target_link_libraries(common PUBLIC)
|
|
target_compile_options(common PRIVATE
|
|
-Wall
|
|
-Wextra
|
|
-Wpedantic
|
|
-lpthread
|
|
)
|
|
target_include_directories(common PUBLIC
|
|
${PROJECT_SOURCE_DIR}/include
|
|
)
|
|
|
|
# Client
|
|
file(GLOB_RECURSE CLIENT_SRC CONFIGURE_DEPENDS src/client/*.c)
|
|
add_executable(client ${CLIENT_SRC})
|
|
target_link_libraries(client PRIVATE common)
|
|
target_include_directories(client PRIVATE
|
|
${PROJECT_SOURCE_DIR}/include
|
|
)
|
|
target_compile_options(client PRIVATE
|
|
-Wall
|
|
-Wextra
|
|
-Wpedantic
|
|
-lpthread
|
|
)
|
|
set_target_properties(client PROPERTIES OUTPUT_NAME "miniboinc_client")
|
|
|
|
# Server
|
|
file(GLOB_RECURSE SERVER_SRC CONFIGURE_DEPENDS src/server/*.c)
|
|
add_executable(server ${SERVER_SRC})
|
|
target_link_libraries(server PRIVATE common)
|
|
target_include_directories(server PRIVATE
|
|
${PROJECT_SOURCE_DIR}/include
|
|
)
|
|
target_compile_options(server PRIVATE
|
|
-Wall
|
|
-Wextra
|
|
-Wpedantic
|
|
-lpthread
|
|
-g
|
|
)
|
|
target_compile_definitions(server PRIVATE)
|
|
set_target_properties(server PROPERTIES OUTPUT_NAME "miniboinc_server")
|