cmake_minimum_required(VERSION 3.0) project(csoap) option(CSOAP_ENABLE_SOAP "Enable SOAP support (need PugiXml)?" ON) option(CSOAP_ENABLE_UT "Enable unit test?" OFF) if(CSOAP_ENABLE_SOAP) add_definitions(-DCSOAP_ENABLE_SOAP) endif() if(CSOAP_ENABLE_UT) enable_testing() endif() # See: https://stackoverflow.com/a/40217291 if(WIN32) macro(get_WIN32_WINNT version) if(CMAKE_SYSTEM_VERSION) set(ver ${CMAKE_SYSTEM_VERSION}) string(REGEX MATCH "^([0-9]+).([0-9])" ver ${ver}) string(REGEX MATCH "^([0-9]+)" verMajor ${ver}) # Check for Windows 10, b/c we'll need to convert to hex 'A'. if("${verMajor}" MATCHES "10") set(verMajor "A") string(REGEX REPLACE "^([0-9]+)" ${verMajor} ver ${ver}) endif("${verMajor}" MATCHES "10") # Remove all remaining '.' characters. string(REPLACE "." "" ver ${ver}) # Prepend each digit with a zero. string(REGEX REPLACE "([0-9A-Z])" "0\\1" ver ${ver}) set(${version} "0x${ver}") endif(CMAKE_SYSTEM_VERSION) endmacro(get_WIN32_WINNT) get_WIN32_WINNT(ver) # E.g., 0x0601 for Win7. message(STATUS "_WIN32_WINNT=${ver}") # Asio needs this! add_definitions(-D_WIN32_WINNT=${ver}) endif(WIN32) # Group sources by dir. # Usage: source_group_by_dir(SRCS) macro(GROUP_SOURCES_BY_DIR source_files) set(sgbd_cur_dir ${CMAKE_CURRENT_BINARY_DIR}) foreach(sgbd_file ${${source_files}}) #message("sgbd_fpath=${sgbd_fpath}") string(REGEX REPLACE ${sgbd_cur_dir}/\(.*\) \\1 sgbd_fpath ${sgbd_file}) string(REGEX REPLACE "\(.*\)/.*" \\1 sgbd_group_name ${sgbd_fpath}) string(COMPARE EQUAL ${sgbd_fpath} ${sgbd_group_name} sgbd_nogroup) string(REPLACE "/" "\\" sgbd_group_name ${sgbd_group_name}) if(sgbd_nogroup) set(sgbd_group_name "\\") endif() #message("group name=${sgbd_group_name}") source_group(${sgbd_group_name} FILES ${sgbd_file}) endforeach() endmacro() # Boost version: 1.66+ set(Boost_USE_STATIC_LIBS ON) find_package(Boost) if(Boost_FOUND) include_directories(${Boost_INCLUDE_DIRS}) link_directories(${Boost_LIBRARY_DIRS}) endif() include_directories(${PROJECT_SOURCE_DIR}/src) add_subdirectory(src)