24 lines
1001 B
CMake
24 lines
1001 B
CMake
|
cmake_minimum_required(VERSION 3.22)
|
||
|
project(flags-cpp)
|
||
|
|
||
|
set(CMAKE_CXX_COMPILER clang++)
|
||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20 -Wall -Wextra -Werror")
|
||
|
|
||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS true)
|
||
|
|
||
|
file(GLOB_RECURSE SOURCES "${CMAKE_SOURCE_DIR}/src/flags-cpp/*.cpp")
|
||
|
add_library(flags-cpp OBJECT ${SOURCES})
|
||
|
set_target_properties(flags-cpp PROPERTIES POSITION_INDEPENDENT_CODE 1)
|
||
|
target_include_directories(flags-cpp PUBLIC "${CMAKE_SOURCE_DIR}/inc")
|
||
|
|
||
|
add_library(flags-cpp-static STATIC $<TARGET_OBJECTS:flags-cpp>)
|
||
|
set_target_properties(flags-cpp-static PROPERTIES OUTPUT_NAME flags-cpp)
|
||
|
target_include_directories(flags-cpp-static PUBLIC "${CMAKE_SOURCE_DIR}/inc")
|
||
|
|
||
|
add_library(flags-cpp-shared SHARED $<TARGET_OBJECTS:flags-cpp>)
|
||
|
set_target_properties(flags-cpp-shared PROPERTIES OUTPUT_NAME flags-cpp)
|
||
|
target_include_directories(flags-cpp-shared PUBLIC "${CMAKE_SOURCE_DIR}/inc")
|
||
|
|
||
|
add_executable(example "${CMAKE_SOURCE_DIR}/src/main.cpp")
|
||
|
target_link_libraries(example flags-cpp-shared)
|