cmake_minimum_required(VERSION 3.14) # Keep this source list aligned with VrUtils.pro. Do not glob Src/: it contains # legacy standalone sources such as getopt.c that are not part of VrUtils. set(VRUTILS_SOURCES Src/VrDateUtils.cpp Src/VrFileUtils.cpp Src/VrLog.cpp Src/VrNetUtils.cpp Src/VrStringUtils.cpp Src/VrTimeUtils.cpp ini/ConvertUTF.c log4cpp/src/AbortAppender.cpp log4cpp/src/Appender.cpp log4cpp/src/AppenderSkeleton.cpp log4cpp/src/AppendersFactory.cpp log4cpp/src/BasicConfigurator.cpp log4cpp/src/BasicLayout.cpp log4cpp/src/BufferingAppender.cpp log4cpp/src/Category.cpp log4cpp/src/CategoryStream.cpp log4cpp/src/Configurator.cpp log4cpp/src/DailyRollingFileAppender.cpp log4cpp/src/DllMain.cpp log4cpp/src/DummyThreads.cpp log4cpp/src/FactoryParams.cpp log4cpp/src/FileAppender.cpp log4cpp/src/Filter.cpp log4cpp/src/FixedContextCategory.cpp log4cpp/src/HierarchyMaintainer.cpp log4cpp/src/IdsaAppender.cpp log4cpp/src/LayoutAppender.cpp log4cpp/src/LayoutsFactory.cpp log4cpp/src/LevelEvaluator.cpp log4cpp/src/Localtime.cpp log4cpp/src/LoggingEvent.cpp log4cpp/src/MSThreads.cpp log4cpp/src/Manipulator.cpp log4cpp/src/NDC.cpp log4cpp/src/NTEventLogAppender.cpp log4cpp/src/OmniThreads.cpp log4cpp/src/OstreamAppender.cpp log4cpp/src/PThreads.cpp log4cpp/src/PassThroughLayout.cpp log4cpp/src/PatternLayout.cpp log4cpp/src/PortabilityImpl.cpp log4cpp/src/Priority.cpp log4cpp/src/Properties.cpp log4cpp/src/PropertyConfigurator.cpp log4cpp/src/PropertyConfiguratorImpl.cpp log4cpp/src/RemoteSyslogAppender.cpp log4cpp/src/RollingFileAppender.cpp log4cpp/src/SimpleConfigurator.cpp log4cpp/src/SimpleLayout.cpp log4cpp/src/SmtpAppender.cpp log4cpp/src/StringQueueAppender.cpp log4cpp/src/StringUtil.cpp log4cpp/src/SyslogAppender.cpp log4cpp/src/TimeStamp.cpp log4cpp/src/TriggeringEventEvaluatorFactory.cpp log4cpp/src/Win32DebugAppender.cpp log4cpp/src/snprintf.c tinyxml2/tinyxml2.cpp jsoncpp/json_reader.cpp jsoncpp/json_value.cpp jsoncpp/json_writer.cpp ) add_library(VrUtils STATIC ${VRUTILS_SOURCES}) set_target_properties(VrUtils PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON ) target_include_directories(VrUtils PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Inc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/ini ${CMAKE_CURRENT_SOURCE_DIR}/tinyxml2 ${CMAKE_CURRENT_SOURCE_DIR}/jsoncpp ${CMAKE_CURRENT_SOURCE_DIR}/log4cpp/include ${CMAKE_CURRENT_SOURCE_DIR}/log4cpp/src ) target_compile_definitions(VrUtils PRIVATE TINYXML2_EXPORT HAVE_SNPRINTF LOG4CPP_HAVE_SSTREAM=1 VR_UTILS_EXPORTS ) if(UNIX AND NOT APPLE) target_compile_definitions(VrUtils PRIVATE LOG4CPP_HAVE_UNISTD_H) set_target_properties(VrUtils PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() find_package(Threads REQUIRED) target_link_libraries(VrUtils PUBLIC Threads::Threads) if(WIN32) # qmake's Windows mkspec supplies these definitions. log4cpp uses the # generic Win32 API names and therefore must see the same character mode. target_compile_definitions(VrUtils PRIVATE UNICODE _UNICODE) target_link_libraries(VrUtils PUBLIC ws2_32 iphlpapi advapi32 shell32) endif() if(MSVC) target_compile_definitions(VrUtils PRIVATE _HAS_AUTO_PTR_ETC=1) target_compile_options(VrUtils PRIVATE /utf-8) endif()