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}/$/${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()