Utils/VrUtils/CMakeLists.txt

113 lines
3.5 KiB
CMake
Raw Normal View History

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()