52 lines
1.8 KiB
CMake
52 lines
1.8 KiB
CMake
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()
|