2017-10-18 23:07:17 +02:00
|
|
|
cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
|
|
|
|
|
|
|
|
# metadata
|
2017-10-25 17:41:19 +02:00
|
|
|
set(META_PROJECT_NAME reflective_rapidjson_generator)
|
2017-10-18 23:07:17 +02:00
|
|
|
set(META_PROJECT_TYPE application)
|
|
|
|
set(LINK_TESTS_AGAINST_APP_TARGET ON)
|
|
|
|
|
|
|
|
# add project files
|
|
|
|
set(HEADER_FILES
|
2017-10-25 15:38:45 +02:00
|
|
|
codegenerator.h
|
2017-10-28 16:31:07 +02:00
|
|
|
jsonserializationcodegenerator.h
|
2017-10-25 15:38:45 +02:00
|
|
|
codefactory.h
|
2017-10-21 00:32:42 +02:00
|
|
|
frontendaction.h
|
|
|
|
consumer.h
|
|
|
|
visitor.h
|
|
|
|
clangversionabstraction.h
|
2017-10-18 23:07:17 +02:00
|
|
|
)
|
|
|
|
set(SRC_FILES
|
2017-10-25 15:38:45 +02:00
|
|
|
codegenerator.cpp
|
2017-10-28 16:31:07 +02:00
|
|
|
jsonserializationcodegenerator.cpp
|
2017-10-25 15:38:45 +02:00
|
|
|
codefactory.cpp
|
2017-10-21 00:32:42 +02:00
|
|
|
frontendaction.cpp
|
|
|
|
consumer.cpp
|
|
|
|
clangversionabstraction.cpp
|
|
|
|
visitor.cpp
|
2017-10-18 23:07:17 +02:00
|
|
|
main.cpp
|
|
|
|
)
|
|
|
|
set(TEST_HEADER_FILES
|
2017-10-25 18:25:34 +02:00
|
|
|
tests/structs.h
|
|
|
|
tests/helper.h
|
2017-10-18 23:07:17 +02:00
|
|
|
)
|
|
|
|
set(TEST_SRC_FILES
|
|
|
|
tests/cppunit.cpp
|
2017-10-25 18:25:34 +02:00
|
|
|
tests/jsongenerator.cpp
|
2017-10-18 23:07:17 +02:00
|
|
|
)
|
|
|
|
|
2017-10-28 18:24:12 +02:00
|
|
|
# find c++utilities and link against the library
|
2017-11-06 20:04:42 +01:00
|
|
|
find_package(c++utilities 4.12.0 REQUIRED)
|
2017-10-18 23:07:17 +02:00
|
|
|
use_cpp_utilities()
|
|
|
|
|
2017-10-28 18:24:12 +02:00
|
|
|
# find Clang for LibTooling; adding clangTooling should be sufficient as it pulls all transitive dependencies
|
2017-10-18 23:07:17 +02:00
|
|
|
find_package(Clang REQUIRED)
|
2017-10-21 00:32:42 +02:00
|
|
|
list(APPEND PRIVATE_LIBRARIES clangTooling)
|
|
|
|
|
2017-10-28 18:24:12 +02:00
|
|
|
# also add reflective_rapidjson which is header-only but might pull additional include dirs for RapidJSON
|
2017-10-18 23:07:17 +02:00
|
|
|
list(APPEND PRIVATE_LIBRARIES reflective_rapidjson)
|
|
|
|
|
2017-11-03 22:41:51 +01:00
|
|
|
# include modules to apply configuration
|
|
|
|
include(BasicConfig)
|
|
|
|
include(WindowsResources)
|
|
|
|
include(AppTarget)
|
|
|
|
|
|
|
|
# trigger code generator for tests because the tests already contain structs to be (de)serialized
|
2017-10-24 01:00:40 +02:00
|
|
|
include(ReflectionGenerator)
|
|
|
|
add_reflection_generator_invocation(
|
2017-10-28 18:24:12 +02:00
|
|
|
INPUT_FILES
|
2017-11-06 21:25:45 +01:00
|
|
|
tests/structs.h # used by test cases
|
|
|
|
tests/cppunit.cpp # just for testing multiple input files and the "empty file" case
|
2017-10-28 18:24:12 +02:00
|
|
|
GENERATORS
|
|
|
|
json
|
|
|
|
OUTPUT_LISTS
|
|
|
|
TEST_HEADER_FILES
|
2017-11-06 21:25:45 +01:00
|
|
|
JSON_CLASSES
|
|
|
|
OtherNotJsonSerializable # test specifying classes for JSON (de)serialization manually
|
|
|
|
SomeOtherClassName # specifying a class that does not exist should not cause any problems
|
2017-11-11 12:37:24 +01:00
|
|
|
JSON_VISIBILITY
|
|
|
|
LIB_EXPORT # not required, just to test setting visibility
|
2017-10-24 01:00:40 +02:00
|
|
|
)
|
|
|
|
|
2017-10-18 23:07:17 +02:00
|
|
|
# include modules to apply configuration
|
|
|
|
include(TestTarget)
|
|
|
|
include(ShellCompletion)
|
2017-10-23 00:41:10 +02:00
|
|
|
include(Doxygen)
|
2017-10-18 23:07:17 +02:00
|
|
|
include(ConfigHeader)
|