ConceptCore/ccl/CMakeLists.txt
2024-04-16 20:00:25 +03:00

97 lines
2.0 KiB
CMake

cmake_minimum_required(VERSION 3.23)
project (ConceptCoreLibrary VERSION 1.2.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
##
## Project options
##
option(CC_BuildTests "Include tests executable" TRUE)
option(CC_UseSanitizers "Use sanitizers" FALSE)
## Compiler options
include(cmake/CXXTargets.cmake)
## Import internal targets
add_subdirectory(cclCommons)
add_subdirectory(cclGraph)
add_subdirectory(cclLang)
add_subdirectory(rslang)
##
## Project Setup
##
add_library(${PROJECT_NAME})
set_target_properties(${PROJECT_NAME} PROPERTIES
OUTPUT_NAME ${PROJECT_NAME}
DEBUG_POSTFIX d
POSITION_INDEPENDENT_CODE ON
)
target_sources(${PROJECT_NAME}
PRIVATE
core/unity/CCL.cpp
cclGraph/src/CGraph.cpp
rslang/unity/reflex_unity1.cpp
rslang/unity/reflex_unity2.cpp
rslang/unity/RSlang.cpp
rslang/unity/RSlang2.cpp
cclLang/unity/cclLang.cpp
)
target_include_directories(${PROJECT_NAME}
PUBLIC
cclCommons/include
cclGraph/include
cclLang/include
rslang/include
core/include
PRIVATE
core/import/include
core/header
cclGraph/header
cclGraph/import/include
rslang/header
rslang/import/include
rslang/import/reflex/include
cclLang/header
cclLang/import/include
)
target_link_libraries(${PROJECT_NAME}
PRIVATE
ccl_CXXwarnings
ccl_CXXoptions
)
if(MSVC)
if (CMAKE_BUILD_TYPE EQUAL "DEBUG")
set(LIB_SUFFIX d)
else()
set(LIB_SUFFIX "")
endif ()
set_target_properties(${PROJECT_NAME}
PROPERTIES
COMPILE_PDB_NAME ${PROJECT_NAME}${LIB_SUFFIX}
)
get_target_property(output_dir ${PROJECT_NAME} BINARY_DIR)
install(FILES ${output_dir}/$<CONFIG>/${PROJECT_NAME}${LIB_SUFFIX}.pdb DESTINATION lib)
endif()
install(TARGETS ${PROJECT_NAME}
ARCHIVE
DESTINATION lib
LIBRARY
DESTINATION lib
INCLUDES
DESTINATION include
)
install(DIRECTORY core/include/ DESTINATION include)
if(CC_BuildTests)
enable_testing()
add_subdirectory("core/test")
endif()