flags-cpp/CMakeLists.txt

60 lines
1.8 KiB
CMake
Raw Normal View History

2024-05-17 13:30:48 +00:00
cmake_minimum_required(VERSION 3.29)
2024-04-25 17:23:56 +00:00
project(flags-cpp)
2024-05-17 13:30:48 +00:00
set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER g++)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
2024-04-25 17:23:56 +00:00
set(CMAKE_EXPORT_COMPILE_COMMANDS true)
2024-05-17 13:30:48 +00:00
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -Wextra -Werror -Wno-unused-parameter -Wno-unused-variable -Wno-unused-private-field")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wextra -Werror -Wno-unused-parameter -Wno-unused-variable -Wno-unused-private-field")
if(DEBUG)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -DDEBUG")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -DDEBUG")
endif()
2024-04-25 17:23:56 +00:00
file(GLOB_RECURSE SOURCES "${CMAKE_SOURCE_DIR}/src/flags-cpp/*.cpp")
2024-05-17 13:30:48 +00:00
file(GLOB_RECURSE HEADERS "${CMAKE_SOURCE_DIR}/inc/flags-cpp/*.h")
include_directories("${CMAKE_SOURCE_DIR}/inc")
2024-04-25 17:23:56 +00:00
add_library(flags-cpp OBJECT ${SOURCES})
set_target_properties(flags-cpp PROPERTIES POSITION_INDEPENDENT_CODE 1)
add_library(flags-cpp-static STATIC $<TARGET_OBJECTS:flags-cpp>)
set_target_properties(flags-cpp-static PROPERTIES OUTPUT_NAME flags-cpp)
add_library(flags-cpp-shared SHARED $<TARGET_OBJECTS:flags-cpp>)
2024-05-17 13:30:48 +00:00
target_link_libraries(flags-cpp-shared -static-libgcc -static-libstdc++)
2024-04-25 17:23:56 +00:00
set_target_properties(flags-cpp-shared PROPERTIES OUTPUT_NAME flags-cpp)
add_executable(example "${CMAKE_SOURCE_DIR}/src/main.cpp")
target_link_libraries(example flags-cpp-shared)
2024-05-17 13:30:48 +00:00
install(TARGETS
flags-cpp-static
flags-cpp-shared
RUNTIME
COMPONENT Runtime
LIBRARY
COMPONENT Runtime
ARCHIVE
COMPONENT Development
)
install(FILES ${HEADERS} DESTINATION include/flags-cpp COMPONENT Development)
install(TARGETS
flags-cpp-static
flags-cpp-shared
EXPORT flags-cpp-targets
DESTINATION lib
)
install(EXPORT flags-cpp-targets
FILE FlagsCppConfig.cmake
DESTINATION lib/cmake/FlagsCpp
)