CMakeLists.txt 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. CMAKE_MINIMUM_REQUIRED( VERSION 3.10 )
  2. PROJECT( OpenDDL-Parser )
  3. SET ( OPENDDL_PARSER_VERSION_MAJOR 0 )
  4. SET ( OPENDDL_PARSER_VERSION_MINOR 1 )
  5. SET ( OPENDDL_PARSER_VERSION_PATCH 0 )
  6. SET ( OPENDDL_PARSER_VERSION ${OPENDDL_PARSER_VERSION_MAJOR}.${OPENDDL_PARSER_VERSION_MINOR}.${OPENDDL_PARSER_VERSION_PATCH} )
  7. SET ( PROJECT_VERSION "${OPENDDL_PARSER_VERSION}" )
  8. option( DDL_DEBUG_OUTPUT "Set to ON to use output debug texts" OFF )
  9. option( DDL_STATIC_LIBRARY "Set to ON to build static libary of OpenDDL Parser." ON )
  10. option( COVERALLS "Generate coveralls data" OFF )
  11. set(CMAKE_CXX_STANDARD 11)
  12. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  13. if( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
  14. find_package(Threads)
  15. else()
  16. add_definitions( -D_CRT_SECURE_NO_WARNINGS )
  17. endif()
  18. if ( DDL_STATIC_LIBRARY )
  19. add_definitions( -DOPENDDL_STATIC_LIBARY )
  20. endif()
  21. if (MSVC)
  22. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING")
  23. add_definitions(-DGTEST_HAS_TR1_TUPLE=0)
  24. endif()
  25. add_definitions( -DOPENDDLPARSER_BUILD )
  26. add_definitions( -D_VARIADIC_MAX=10 )
  27. add_definitions( -DGTEST_HAS_PTHREAD=0 )
  28. if ( DDL_DEBUG_OUTPUT )
  29. add_definitions( -DDDL_DEBUG_HEADER_NAME)
  30. endif()
  31. INCLUDE_DIRECTORIES(
  32. ./
  33. include/
  34. contrib/gtest-1.7.0/include
  35. contrib/gtest-1.7.0/
  36. )
  37. link_directories(
  38. ${CMAKE_HOME_DIRECTORY}/lib
  39. )
  40. SET( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake )
  41. SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/lib )
  42. SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/lib )
  43. SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/bin )
  44. if( WIN32 AND NOT CYGWIN )
  45. set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc" ) # Force to always compile with W4
  46. if( CMAKE_CXX_FLAGS MATCHES "/W[0-4]" )
  47. string( REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" )
  48. else()
  49. set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4" )
  50. endif()
  51. elseif( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
  52. # Update if necessary
  53. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic ${OPENDDL_CXXFLAGS}")
  54. elseif ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
  55. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic ${OPENDDL_CXXFLAGS} -Wwrite-strings")
  56. endif()
  57. if (COVERALLS)
  58. include(Coveralls)
  59. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
  60. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
  61. endif()
  62. # Include the doc component.
  63. FIND_PACKAGE( doxygen )
  64. IF ( DOXYGEN_FOUND )
  65. CONFIGURE_FILE( doc/openddlparser_doc.in doc/doxygenfile @ONLY )
  66. ADD_CUSTOM_TARGET( doc ALL ${DOXYGEN_EXECUTABLE} doc/doxygenfile
  67. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  68. COMMENT "Generating API documentation with Doxygen" VERBATIM )
  69. ENDIF ( DOXYGEN_FOUND )
  70. SET ( openddl_parser_src
  71. code/OpenDDLCommon.cpp
  72. code/OpenDDLExport.cpp
  73. code/OpenDDLParser.cpp
  74. code/OpenDDLStream.cpp
  75. code/DDLNode.cpp
  76. code/Value.cpp
  77. include/openddlparser/OpenDDLCommon.h
  78. include/openddlparser/OpenDDLExport.h
  79. include/openddlparser/OpenDDLParser.h
  80. include/openddlparser/OpenDDLParserUtils.h
  81. include/openddlparser/OpenDDLStream.h
  82. include/openddlparser/DDLNode.h
  83. include/openddlparser/Value.h
  84. include/openddlparser/TPoolAllocator.h
  85. README.md
  86. )
  87. SOURCE_GROUP( code FILES ${openddl_parser_src} )
  88. if ( DDL_STATIC_LIBRARY )
  89. ADD_LIBRARY( openddl_parser STATIC
  90. ${openddl_parser_src}
  91. )
  92. else()
  93. ADD_LIBRARY( openddl_parser SHARED
  94. ${openddl_parser_src}
  95. )
  96. endif()
  97. SET ( GTEST_PATH contrib/gtest-1.7.0 )
  98. SET ( gtest_src
  99. ${GTEST_PATH}/src/gtest-death-test.cc
  100. ${GTEST_PATH}/src/gtest-filepath.cc
  101. ${GTEST_PATH}/src/gtest-internal-inl.h
  102. ${GTEST_PATH}/src/gtest-port.cc
  103. ${GTEST_PATH}/src/gtest-printers.cc
  104. ${GTEST_PATH}/src/gtest-test-part.cc
  105. ${GTEST_PATH}/src/gtest-typed-test.cc
  106. ${GTEST_PATH}/src/gtest.cc
  107. )
  108. SET( openddl_parser_unittest_src
  109. test/UnitTestCommon.h
  110. test/DDLNodeTest.cpp
  111. test/OpenDDLCommonTest.cpp
  112. test/OpenDDLExportTest.cpp
  113. test/OpenDDLParserTest.cpp
  114. test/OpenDDLParserUtilsTest.cpp
  115. test/OpenDDLStreamTest.cpp
  116. test/OpenDDLIntegrationTest.cpp
  117. test/ValueTest.cpp
  118. test/OpenDDLDefectsTest.cpp
  119. test/OssFuzzTest.cpp
  120. test/main.cpp
  121. )
  122. add_definitions(-DOPENDDL_TEST_DATA="${CMAKE_CURRENT_LIST_DIR}/test/TestData")
  123. SOURCE_GROUP( code FILES ${openddl_parser_unittest_src} )
  124. SOURCE_GROUP( gtest FILES ${gtest_src} )
  125. ADD_EXECUTABLE( openddl_parser_unittest
  126. ${gtest_src}
  127. ${openddl_parser_unittest_src}
  128. )
  129. target_link_libraries( openddl_parser_unittest openddl_parser ${CMAKE_THREAD_LIBS_INIT} )
  130. SET( openddl_parser_demo_src
  131. demo/main.cpp
  132. )
  133. if (COVERALLS)
  134. set(COVERAGE_SRCS ${gtest_src} ${openddl_parser_unittest_src} )
  135. # Create the coveralls target.
  136. coveralls_setup(
  137. "${COVERAGE_SRCS}" # The source files.
  138. ON # If we should upload.
  139. "${PROJECT_SOURCE_DIR}/cmake/") # (Optional) Alternate project cmake module path.
  140. endif()
  141. ADD_EXECUTABLE( openddl_parser_demo
  142. ${openddl_parser_demo_src}
  143. )
  144. target_link_libraries( openddl_parser_demo openddl_parser )