75 lines
2.3 KiB
CMake
75 lines
2.3 KiB
CMake
|
cmake_minimum_required(VERSION 3.10)
|
||
|
project(cpp-ipc)
|
||
|
|
||
|
option(LIBIPC_BUILD_TESTS "Build all of libipc's own tests." OFF)
|
||
|
option(LIBIPC_BUILD_DEMOS "Build all of libipc's own demos." OFF)
|
||
|
option(LIBIPC_BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
|
||
|
option(LIBIPC_USE_STATIC_CRT "Set to ON to build with static CRT on Windows (/MT)." OFF)
|
||
|
|
||
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||
|
set(CMAKE_CXX_STANDARD 17)
|
||
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG")
|
||
|
if(NOT MSVC)
|
||
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2")
|
||
|
endif()
|
||
|
|
||
|
if (MSVC)
|
||
|
set(CompilerFlags
|
||
|
CMAKE_CXX_FLAGS
|
||
|
CMAKE_CXX_FLAGS_DEBUG
|
||
|
CMAKE_CXX_FLAGS_RELEASE
|
||
|
CMAKE_C_FLAGS
|
||
|
CMAKE_C_FLAGS_DEBUG
|
||
|
CMAKE_C_FLAGS_RELEASE
|
||
|
)
|
||
|
if (LIBIPC_USE_STATIC_CRT)
|
||
|
foreach(CompilerFlag ${CompilerFlags})
|
||
|
string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
|
||
|
string(REPLACE "/MDd" "/MTd" ${CompilerFlag} "${${CompilerFlag}}")
|
||
|
endforeach()
|
||
|
else()
|
||
|
foreach(CompilerFlag ${CompilerFlags})
|
||
|
string(REPLACE "/MT" "/MD" ${CompilerFlag} "${${CompilerFlag}}")
|
||
|
string(REPLACE "/MTd" "/MDd" ${CompilerFlag} "${${CompilerFlag}}")
|
||
|
endforeach()
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
|
||
|
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
|
||
|
set(LIBIPC_PROJECT_DIR ${PROJECT_SOURCE_DIR})
|
||
|
|
||
|
# Unicode Support
|
||
|
add_definitions(-DUNICODE -D_UNICODE)
|
||
|
|
||
|
add_subdirectory(src)
|
||
|
|
||
|
if (LIBIPC_BUILD_TESTS)
|
||
|
set(GOOGLETEST_VERSION 1.10.0)
|
||
|
if (LIBIPC_USE_STATIC_CRT)
|
||
|
set(gtest_force_shared_crt OFF)
|
||
|
else()
|
||
|
set(gtest_force_shared_crt ON)
|
||
|
endif()
|
||
|
add_subdirectory(3rdparty/gtest)
|
||
|
add_subdirectory(test)
|
||
|
endif()
|
||
|
|
||
|
if (LIBIPC_BUILD_DEMOS)
|
||
|
add_subdirectory(demo/chat)
|
||
|
add_subdirectory(demo/msg_que)
|
||
|
add_subdirectory(demo/send_recv)
|
||
|
if (MSVC)
|
||
|
add_subdirectory(demo/win_service/service)
|
||
|
add_subdirectory(demo/win_service/client)
|
||
|
else()
|
||
|
add_subdirectory(demo/linux_service/service)
|
||
|
add_subdirectory(demo/linux_service/client)
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
install(
|
||
|
DIRECTORY "include/"
|
||
|
DESTINATION "include"
|
||
|
)
|