cmake_minimum_required(VERSION 3.17) project(FileToSharedMem) # Подключаем исходные файлы проекта. set(SOURCES MemMapping.cpp MemMapping.h ) # Подключаем внешние зависимости. include(FetchContent) include(SharedLibraries.cmake) # Определяем зависимости, являющиеся общими для всех целей. set(LIST_OF_SHARED_LIBRARIES cxxopts ) # Определяем свойства, являющиеся общими для всех целей. set(LIST_OF_SHARED_PROPERTIES CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF ) add_executable(FileToSharedMem FileToSharedMem.cpp ${SOURCES}) add_executable(DevMem DevMem.cpp ${SOURCES}) # Добавляем корневую директорию для того чтобы избежать инклюдов с ../ target_include_directories(FileToSharedMem PRIVATE ${PROJECT_SOURCE_DIR}) target_include_directories(DevMem PRIVATE ${PROJECT_SOURCE_DIR}) # Подключаем зависимости. target_link_libraries(FileToSharedMem PRIVATE ${LIST_OF_SHARED_LIBRARIES}) target_link_libraries(DevMem PRIVATE ${LIST_OF_SHARED_LIBRARIES}) # Определяем свойства. set_target_properties(FileToSharedMem PROPERTIES ${LIST_OF_SHARED_PROPERTIES}) set_target_properties(DevMem PROPERTIES ${LIST_OF_SHARED_PROPERTIES}) # Подключаем зависимости платформы. if(CMAKE_SYSTEM_NAME STREQUAL "Windows") set(WIN_SHARED_LIBRARIES -Wl,-Bstatic,--whole-archive -static-libgcc -static-libstdc++ -lwinpthread -Wl,--no-whole-archive wsock32 ws2_32 ) target_link_libraries(FileToSharedMem PRIVATE ${WIN_SHARED_LIBRARIES}) target_link_libraries(DevMem PRIVATE ${WIN_SHARED_LIBRARIES}) endif()