Apply cmake-format
This commit is contained in:
parent
39dcba215e
commit
1f6fade6c2
|
@ -15,8 +15,7 @@ set(HEADER_FILES
|
|||
frontendaction.h
|
||||
consumer.h
|
||||
visitor.h
|
||||
clangversionabstraction.h
|
||||
)
|
||||
clangversionabstraction.h)
|
||||
set(SRC_FILES
|
||||
codegenerator.cpp
|
||||
serializationcodegenerator.cpp
|
||||
|
@ -27,32 +26,29 @@ set(SRC_FILES
|
|||
consumer.cpp
|
||||
clangversionabstraction.cpp
|
||||
visitor.cpp
|
||||
main.cpp
|
||||
)
|
||||
set(TEST_HEADER_FILES
|
||||
tests/helper.h
|
||||
)
|
||||
set(TEST_SRC_FILES
|
||||
tests/binarygenerator.cpp
|
||||
)
|
||||
main.cpp)
|
||||
set(TEST_HEADER_FILES tests/helper.h)
|
||||
set(TEST_SRC_FILES tests/binarygenerator.cpp)
|
||||
|
||||
# add JSON-specific test cases
|
||||
if(RapidJSON_FOUND)
|
||||
list(APPEND TEST_HEADER_FILES
|
||||
tests/structs.h
|
||||
tests/morestructs.h
|
||||
)
|
||||
list(APPEND TEST_SRC_FILES
|
||||
tests/jsongenerator.cpp
|
||||
)
|
||||
endif()
|
||||
if (RapidJSON_FOUND)
|
||||
list(APPEND TEST_HEADER_FILES tests/structs.h tests/morestructs.h)
|
||||
list(APPEND TEST_SRC_FILES tests/jsongenerator.cpp)
|
||||
endif ()
|
||||
|
||||
# link against c++utilities
|
||||
use_cpp_utilities()
|
||||
|
||||
# find Clang for LibTooling; adding clangTooling should be sufficient as it pulls all transitive dependencies
|
||||
find_package(Clang REQUIRED)
|
||||
list(APPEND PRIVATE_LIBRARIES clangTooling clangFrontend clangAST clangLex clangSema clangBasic LLVM)
|
||||
list(APPEND PRIVATE_LIBRARIES
|
||||
clangTooling
|
||||
clangFrontend
|
||||
clangAST
|
||||
clangLex
|
||||
clangSema
|
||||
clangBasic
|
||||
LLVM)
|
||||
|
||||
# also add reflective_rapidjson which is header-only but might pull additional include dirs for RapidJSON
|
||||
list(APPEND PRIVATE_LIBRARIES reflective_rapidjson)
|
||||
|
@ -66,8 +62,9 @@ include(ShellCompletion)
|
|||
include(Doxygen)
|
||||
|
||||
# trigger code generator for tests because the tests already contain structs to be (de)serialized
|
||||
if(TARGET reflective_rapidjson_generator_tests)
|
||||
if (TARGET reflective_rapidjson_generator_tests)
|
||||
include(ReflectionGenerator)
|
||||
# cmake-format: off
|
||||
add_reflection_generator_invocation(
|
||||
INPUT_FILES
|
||||
tests/structs.h # used by test cases
|
||||
|
@ -88,19 +85,20 @@ if(TARGET reflective_rapidjson_generator_tests)
|
|||
JSON_VISIBILITY
|
||||
LIB_EXPORT # not required, just to test setting visibility
|
||||
)
|
||||
# cmake-format: on
|
||||
list(APPEND TEST_HEADER_FILES ${TEST_GENERATED_HEADER_FILES})
|
||||
target_sources(reflective_rapidjson_generator_tests PRIVATE ${TEST_GENERATED_HEADER_FILES})
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
# add paths for include dirs of c++utilities and RapidJSON to config header so test cases can use it
|
||||
set(META_CUSTOM_CONFIG "#define CPP_UTILITIES_INCLUDE_DIRS \"${CPP_UTILITIES_INCLUDE_DIRS}\"\n")
|
||||
if(RapidJSON_FOUND)
|
||||
if (RapidJSON_FOUND)
|
||||
string(APPEND META_CUSTOM_CONFIG "#define RAPIDJSON_INCLUDE_DIRS \"${RAPIDJSON_INCLUDE_DIRS}\"\n")
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
# add path of Clang's resource dir to config header so test cases can use it
|
||||
string(APPEND META_CUSTOM_CONFIG "#define REFLECTION_GENERATOR_CLANG_RESOURCE_DIR \"${REFLECTION_GENERATOR_CLANG_RESOURCE_DIR}\"\n")
|
||||
string(APPEND META_CUSTOM_CONFIG
|
||||
"#define REFLECTION_GENERATOR_CLANG_RESOURCE_DIR \"${REFLECTION_GENERATOR_CLANG_RESOURCE_DIR}\"\n")
|
||||
|
||||
# make config header
|
||||
include(ConfigHeader)
|
||||
|
||||
|
|
|
@ -5,66 +5,53 @@ set(META_PROJECT_TYPE library)
|
|||
set(META_HEADER_ONLY_LIB ON)
|
||||
|
||||
# add project files
|
||||
set(HEADER_FILES
|
||||
traits.h
|
||||
)
|
||||
set(SRC_FILES
|
||||
)
|
||||
set(TEST_HEADER_FILES
|
||||
)
|
||||
set(TEST_SRC_FILES
|
||||
)
|
||||
set(CMAKE_MODULE_FILES
|
||||
cmake/modules/ReflectionGenerator.cmake
|
||||
)
|
||||
set(DOC_FILES
|
||||
README.md
|
||||
)
|
||||
set(HEADER_FILES traits.h)
|
||||
set(SRC_FILES)
|
||||
set(TEST_HEADER_FILES)
|
||||
set(TEST_SRC_FILES)
|
||||
set(CMAKE_MODULE_FILES cmake/modules/ReflectionGenerator.cmake)
|
||||
set(DOC_FILES README.md)
|
||||
|
||||
# add JSON-specific sources
|
||||
if(RapidJSON_FOUND)
|
||||
if (RapidJSON_FOUND)
|
||||
list(APPEND HEADER_FILES
|
||||
json/reflector.h
|
||||
json/reflector-boosthana.h
|
||||
json/reflector-chronoutilities.h
|
||||
json/serializable.h
|
||||
json/errorhandling.h
|
||||
)
|
||||
json/reflector.h
|
||||
json/reflector-boosthana.h
|
||||
json/reflector-chronoutilities.h
|
||||
json/serializable.h
|
||||
json/errorhandling.h)
|
||||
list(APPEND TEST_SRC_FILES
|
||||
tests/jsonreflector.cpp
|
||||
tests/jsonreflector-boosthana.cpp
|
||||
tests/jsonreflector-chronoutilities.cpp
|
||||
)
|
||||
endif()
|
||||
tests/jsonreflector.cpp
|
||||
tests/jsonreflector-boosthana.cpp
|
||||
tests/jsonreflector-chronoutilities.cpp)
|
||||
endif ()
|
||||
|
||||
# add binary (de)serialization specific sources
|
||||
list(APPEND HEADER_FILES
|
||||
binary/reflector.h
|
||||
binary/reflector-boosthana.h
|
||||
binary/reflector-chronoutilities.h
|
||||
binary/serializable.h
|
||||
)
|
||||
binary/reflector.h
|
||||
binary/reflector-boosthana.h
|
||||
binary/reflector-chronoutilities.h
|
||||
binary/serializable.h)
|
||||
list(APPEND TEST_SRC_FILES
|
||||
tests/traits.cpp
|
||||
tests/binaryreflector.cpp
|
||||
tests/binaryreflector-boosthana.cpp
|
||||
)
|
||||
tests/traits.cpp
|
||||
tests/binaryreflector.cpp
|
||||
tests/binaryreflector-boosthana.cpp)
|
||||
|
||||
# add (only) the CMake module and include dirs for c++utilities because we're not depending on the actual library
|
||||
list(APPEND CMAKE_MODULE_PATH ${CPP_UTILITIES_MODULE_DIRS})
|
||||
if (CPP_UTILITIES_SOURCE_DIR)
|
||||
list(APPEND PUBLIC_SHARED_INCLUDE_DIRS "${CPP_UTILITIES_SOURCE_DIR}/..")
|
||||
list(APPEND PUBLIC_STATIC_INCLUDE_DIRS "${CPP_UTILITIES_SOURCE_DIR}/..")
|
||||
else()
|
||||
else ()
|
||||
list(APPEND PUBLIC_SHARED_INCLUDE_DIRS "${CPP_UTILITIES_INCLUDE_DIRS}")
|
||||
list(APPEND PUBLIC_STATIC_INCLUDE_DIRS "${CPP_UTILITIES_INCLUDE_DIRS}")
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
# find RapidJSON, also add only the include dirs because RapidJSON is a header-only library
|
||||
if(RapidJSON_FOUND)
|
||||
if (RapidJSON_FOUND)
|
||||
list(APPEND PUBLIC_SHARED_INCLUDE_DIRS ${RAPIDJSON_INCLUDE_DIRS})
|
||||
list(APPEND PUBLIC_STATIC_INCLUDE_DIRS ${RAPIDJSON_INCLUDE_DIRS})
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
# include modules to apply configuration
|
||||
include(BasicConfig)
|
||||
|
|
|
@ -1,50 +1,55 @@
|
|||
cmake_minimum_required(VERSION 3.3.0 FATAL_ERROR)
|
||||
|
||||
# prevent multiple inclusion
|
||||
if(DEFINED REFLECTION_GENERATOR_MODULE_LOADED)
|
||||
if (DEFINED REFLECTION_GENERATOR_MODULE_LOADED)
|
||||
return()
|
||||
endif()
|
||||
endif ()
|
||||
set(REFLECTION_GENERATOR_MODULE_LOADED YES)
|
||||
|
||||
# find code generator
|
||||
set(DEFAULT_REFLECTION_GENERATOR_EXECUTABLE "reflective_rapidjson_generator")
|
||||
set(REFLECTION_GENERATOR_EXECUTABLE "" CACHE FILEPATH "path to executable of reflection generator")
|
||||
if(REFLECTION_GENERATOR_EXECUTABLE)
|
||||
if (REFLECTION_GENERATOR_EXECUTABLE)
|
||||
# use custom generator executable
|
||||
if(NOT EXISTS "${REFLECTION_GENERATOR_EXECUTABLE}" OR IS_DIRECTORY "${REFLECTION_GENERATOR_EXECUTABLE}")
|
||||
if (NOT EXISTS "${REFLECTION_GENERATOR_EXECUTABLE}" OR IS_DIRECTORY "${REFLECTION_GENERATOR_EXECUTABLE}")
|
||||
message(FATAL_ERROR "The specified code generator executable \"${REFLECTION_GENERATOR_EXECUTABLE}\" is not a file.")
|
||||
endif()
|
||||
elseif(CMAKE_CROSSCOMPILING OR NOT TARGET "${DEFAULT_REFLECTION_GENERATOR_EXECUTABLE}")
|
||||
endif ()
|
||||
elseif (CMAKE_CROSSCOMPILING OR NOT TARGET "${DEFAULT_REFLECTION_GENERATOR_EXECUTABLE}")
|
||||
# find native/external "reflective_rapidjson_generator"
|
||||
find_program(REFLECTION_GENERATOR_EXECUTABLE
|
||||
"${DEFAULT_REFLECTION_GENERATOR_EXECUTABLE}"
|
||||
PATHS "/usr/bin" "/bin"
|
||||
)
|
||||
else()
|
||||
find_program(REFLECTION_GENERATOR_EXECUTABLE "${DEFAULT_REFLECTION_GENERATOR_EXECUTABLE}" PATHS "/usr/bin" "/bin")
|
||||
else ()
|
||||
# use "reflective_rapidjson_generator" target
|
||||
set(REFLECTION_GENERATOR_EXECUTABLE "${DEFAULT_REFLECTION_GENERATOR_EXECUTABLE}")
|
||||
endif()
|
||||
if(NOT REFLECTION_GENERATOR_EXECUTABLE)
|
||||
message(FATAL_ERROR "Unable to find executable of generator for reflection code. Set REFLECTION_GENERATOR_EXECUTABLE to specify the path.")
|
||||
endif()
|
||||
endif ()
|
||||
if (NOT REFLECTION_GENERATOR_EXECUTABLE)
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"Unable to find executable of generator for reflection code. Set REFLECTION_GENERATOR_EXECUTABLE to specify the path."
|
||||
)
|
||||
endif ()
|
||||
|
||||
# determine Clang's resource directory
|
||||
set(REFLECTION_GENERATOR_CLANG_RESOURCE_DIR "" CACHE PATH "directory containing Clang's builtin headers, usually /usr/lib/clang/version")
|
||||
if(NOT REFLECTION_GENERATOR_CLANG_RESOURCE_DIR)
|
||||
if(NOT REFLECTION_GENERATOR_CLANG_BIN)
|
||||
find_program(REFLECTION_GENERATOR_CLANG_BIN clang
|
||||
NAMES clang++
|
||||
PATHS "/usr/bin" "/bin"
|
||||
)
|
||||
if(NOT REFLECTION_GENERATOR_CLANG_BIN)
|
||||
set(REFLECTION_GENERATOR_CLANG_RESOURCE_DIR ""
|
||||
CACHE PATH "directory containing Clang's builtin headers, usually /usr/lib/clang/version")
|
||||
if (NOT REFLECTION_GENERATOR_CLANG_RESOURCE_DIR)
|
||||
if (NOT REFLECTION_GENERATOR_CLANG_BIN)
|
||||
find_program(REFLECTION_GENERATOR_CLANG_BIN clang NAMES clang++ PATHS "/usr/bin" "/bin")
|
||||
if (NOT REFLECTION_GENERATOR_CLANG_BIN)
|
||||
message(FATAL_ERROR "Unable to find the clang executable to determine Clang's resource directory")
|
||||
endif()
|
||||
endif()
|
||||
exec_program(${REFLECTION_GENERATOR_CLANG_BIN} ARGS -print-resource-dir OUTPUT_VARIABLE REFLECTION_GENERATOR_CLANG_RESOURCE_DIR)
|
||||
endif()
|
||||
if(NOT REFLECTION_GENERATOR_CLANG_RESOURCE_DIR OR NOT IS_DIRECTORY "${REFLECTION_GENERATOR_CLANG_RESOURCE_DIR}")
|
||||
message(FATAL_ERROR "Unable to find Clang's resource directory. Set REFLECTION_GENERATOR_CLANG_RESOURCE_DIR manually to the corresponding path (usually /usr/lib/clang/\$version).")
|
||||
endif()
|
||||
endif ()
|
||||
endif ()
|
||||
exec_program(${REFLECTION_GENERATOR_CLANG_BIN}
|
||||
ARGS
|
||||
-print-resource-dir
|
||||
OUTPUT_VARIABLE
|
||||
REFLECTION_GENERATOR_CLANG_RESOURCE_DIR)
|
||||
endif ()
|
||||
if (NOT REFLECTION_GENERATOR_CLANG_RESOURCE_DIR OR NOT IS_DIRECTORY "${REFLECTION_GENERATOR_CLANG_RESOURCE_DIR}")
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"Unable to find Clang's resource directory. Set REFLECTION_GENERATOR_CLANG_RESOURCE_DIR manually to the corresponding path (usually /usr/lib/clang/\$version)."
|
||||
)
|
||||
endif ()
|
||||
message(STATUS "Using ${REFLECTION_GENERATOR_CLANG_RESOURCE_DIR} as Clang's resource directory for Reflective RapidJSON")
|
||||
|
||||
# allow to specify a custom include paths (useful for cross-compilation when header files are under custom prefix)
|
||||
|
@ -55,67 +60,61 @@ set(REFLECTION_GENERATOR_TRIPLE "" CACHE STRING "platform triple for code genera
|
|||
|
||||
# define helper function to add a reflection generator invocation for a specified list of source files
|
||||
include(CMakeParseArguments)
|
||||
function(add_reflection_generator_invocation)
|
||||
function (add_reflection_generator_invocation)
|
||||
# parse arguments
|
||||
set(OPTIONAL_ARGS
|
||||
)
|
||||
set(ONE_VALUE_ARGS
|
||||
OUTPUT_DIRECTORY
|
||||
JSON_VISIBILITY
|
||||
)
|
||||
set(MULTI_VALUE_ARGS
|
||||
INPUT_FILES
|
||||
GENERATORS
|
||||
OUTPUT_LISTS
|
||||
CLANG_OPTIONS
|
||||
CLANG_OPTIONS_FROM_TARGETS
|
||||
JSON_CLASSES)
|
||||
set(OPTIONAL_ARGS)
|
||||
set(ONE_VALUE_ARGS OUTPUT_DIRECTORY JSON_VISIBILITY)
|
||||
set(MULTI_VALUE_ARGS INPUT_FILES GENERATORS OUTPUT_LISTS CLANG_OPTIONS CLANG_OPTIONS_FROM_TARGETS JSON_CLASSES)
|
||||
cmake_parse_arguments(ARGS "${OPTIONAL_ARGS}" "${ONE_VALUE_ARGS}" "${MULTI_VALUE_ARGS}" ${ARGN})
|
||||
|
||||
# determine file name or file path if none specified
|
||||
if(NOT ARGS_OUTPUT_DIRECTORY)
|
||||
if (NOT ARGS_OUTPUT_DIRECTORY)
|
||||
set(ARGS_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/reflection")
|
||||
file(MAKE_DIRECTORY "${ARGS_OUTPUT_DIRECTORY}")
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
# specify Clang's resource directory
|
||||
list(APPEND ARGS_CLANG_OPTIONS -resource-dir "${REFLECTION_GENERATOR_CLANG_RESOURCE_DIR}")
|
||||
|
||||
# apply specified REFLECTION_GENERATOR_TRIPLET
|
||||
if(REFLECTION_GENERATOR_TRIPLE)
|
||||
if (REFLECTION_GENERATOR_TRIPLE)
|
||||
list(APPEND ARGS_CLANG_OPTIONS
|
||||
-Xclang -triple
|
||||
-Xclang "${REFLECTION_GENERATOR_TRIPLE}"
|
||||
)
|
||||
endif()
|
||||
-Xclang
|
||||
-triple
|
||||
-Xclang
|
||||
"${REFLECTION_GENERATOR_TRIPLE}")
|
||||
endif ()
|
||||
|
||||
# apply specified REFLECTION_GENERATOR_INCLUDE_DIRECTORIES
|
||||
foreach(INCLUDE_DIR ${REFLECTION_GENERATOR_INCLUDE_DIRECTORIES})
|
||||
if(NOT IS_DIRECTORY "${INCLUDE_DIR}")
|
||||
foreach (INCLUDE_DIR ${REFLECTION_GENERATOR_INCLUDE_DIRECTORIES})
|
||||
if (NOT IS_DIRECTORY "${INCLUDE_DIR}")
|
||||
message(FATAL_ERROR "Specified include directory \"${INCLUDE_DIR})\" for reflection generator doesn't exists.")
|
||||
endif()
|
||||
endif ()
|
||||
list(APPEND ARGS_CLANG_OPTIONS -I "${INCLUDE_DIR}")
|
||||
endforeach()
|
||||
endforeach ()
|
||||
|
||||
# add workaround for cross compiling with mingw-w64 to prevent host stdlib.h being included
|
||||
# (not sure why specifying REFLECTION_GENERATOR_INCLUDE_DIRECTORIES is not enough to let it find this particular header file)
|
||||
if(MINGW)
|
||||
# add workaround for cross compiling with mingw-w64 to prevent host stdlib.h being included (not sure why specifying
|
||||
# REFLECTION_GENERATOR_INCLUDE_DIRECTORIES is not enough to let it find this particular header file)
|
||||
if (MINGW)
|
||||
# find MinGW version of stdlib.h
|
||||
find_file(MINGW_W64_STDLIB_H stdlib.h ${REFLECTION_GENERATOR_INCLUDE_DIRECTORIES})
|
||||
if(NOT EXISTS "${MINGW_W64_STDLIB_H}")
|
||||
message(FATAL_ERROR "Unable to locate MinGW version of stdlib.h. Ensure it is in REFLECTION_GENERATOR_INCLUDE_DIRECTORIES.")
|
||||
endif()
|
||||
if (NOT EXISTS "${MINGW_W64_STDLIB_H}")
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"Unable to locate MinGW version of stdlib.h. Ensure it is in REFLECTION_GENERATOR_INCLUDE_DIRECTORIES.")
|
||||
endif ()
|
||||
|
||||
# ensure libtooling includes the MinGW version of stdlib.h rather than the host version
|
||||
list(APPEND ARGS_CLANG_OPTIONS
|
||||
-include "${MINGW_W64_STDLIB_H}"
|
||||
-D_STDLIB_H # prevent processing of host stdlib.h
|
||||
)
|
||||
endif()
|
||||
-include
|
||||
"${MINGW_W64_STDLIB_H}"
|
||||
-D_STDLIB_H # prevent processing of host stdlib.h
|
||||
)
|
||||
endif ()
|
||||
|
||||
# add options to be passed to clang from the specified targets
|
||||
if(ARGS_CLANG_OPTIONS_FROM_TARGETS)
|
||||
foreach(TARGET_NAME ${ARGS_CLANG_OPTIONS_FROM_TARGETS})
|
||||
if (ARGS_CLANG_OPTIONS_FROM_TARGETS)
|
||||
foreach (TARGET_NAME ${ARGS_CLANG_OPTIONS_FROM_TARGETS})
|
||||
# set c++ standard
|
||||
list(APPEND CLANG_TIDY_CXX_FLAGS "-std=c++$<TARGET_PROPERTY:${TARGET_NAME},CXX_STANDARD>")
|
||||
# add compile flags
|
||||
|
@ -127,11 +126,11 @@ function(add_reflection_generator_invocation)
|
|||
# add include directories
|
||||
set(PROP "$<TARGET_PROPERTY:${TARGET_NAME},INCLUDE_DIRECTORIES>")
|
||||
list(APPEND ARGS_CLANG_OPTIONS "$<$<BOOL:${PROP}>:-I$<JOIN:${PROP},$<SEMICOLON>-I>>")
|
||||
endforeach()
|
||||
endif()
|
||||
endforeach ()
|
||||
endif ()
|
||||
|
||||
# create a custom command for each input file
|
||||
foreach(INPUT_FILE ${ARGS_INPUT_FILES})
|
||||
foreach (INPUT_FILE ${ARGS_INPUT_FILES})
|
||||
# determine the output file
|
||||
get_filename_component(OUTPUT_NAME "${INPUT_FILE}" NAME_WE)
|
||||
set(OUTPUT_FILE "${ARGS_OUTPUT_DIRECTORY}/${OUTPUT_NAME}.h")
|
||||
|
@ -139,34 +138,35 @@ function(add_reflection_generator_invocation)
|
|||
|
||||
# compose the CLI arguments and actually add the custom command
|
||||
set(CLI_ARGUMENTS
|
||||
--output-file "${OUTPUT_FILE}"
|
||||
--input-file "${INPUT_FILE}"
|
||||
--generators ${ARGS_GENERATORS}
|
||||
--clang-opt ${ARGS_CLANG_OPTIONS}
|
||||
--json-classes ${ARGS_JSON_CLASSES}
|
||||
)
|
||||
if(ARGS_JSON_VISIBILITY)
|
||||
--output-file
|
||||
"${OUTPUT_FILE}"
|
||||
--input-file
|
||||
"${INPUT_FILE}"
|
||||
--generators
|
||||
${ARGS_GENERATORS}
|
||||
--clang-opt
|
||||
${ARGS_CLANG_OPTIONS}
|
||||
--json-classes
|
||||
${ARGS_JSON_CLASSES})
|
||||
if (ARGS_JSON_VISIBILITY)
|
||||
list(APPEND CLI_ARGUMENTS --json-visibility "${ARGS_JSON_VISIBILITY}")
|
||||
endif()
|
||||
add_custom_command(
|
||||
OUTPUT "${OUTPUT_FILE}"
|
||||
COMMAND "${REFLECTION_GENERATOR_EXECUTABLE}"
|
||||
ARGS ${CLI_ARGUMENTS}
|
||||
DEPENDS "${INPUT_FILE}"
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
COMMENT "Generating reflection code for ${INPUT_FILE}"
|
||||
VERBATIM
|
||||
)
|
||||
endif ()
|
||||
add_custom_command(OUTPUT "${OUTPUT_FILE}"
|
||||
COMMAND "${REFLECTION_GENERATOR_EXECUTABLE}" ARGS ${CLI_ARGUMENTS}
|
||||
DEPENDS "${INPUT_FILE}"
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
COMMENT "Generating reflection code for ${INPUT_FILE}"
|
||||
VERBATIM)
|
||||
|
||||
# prevent Qt's code generator to be executed on the files generated by this code generator
|
||||
set_property(SOURCE "${OUTPUT_FILE}" PROPERTY SKIP_AUTOGEN ON)
|
||||
|
||||
# append the output file to lists specified via OUTPUT_LISTS
|
||||
if(ARGS_OUTPUT_LISTS)
|
||||
foreach(OUTPUT_LIST ${ARGS_OUTPUT_LISTS})
|
||||
if (ARGS_OUTPUT_LISTS)
|
||||
foreach (OUTPUT_LIST ${ARGS_OUTPUT_LISTS})
|
||||
list(APPEND "${OUTPUT_LIST}" "${OUTPUT_FILE}")
|
||||
set("${OUTPUT_LIST}" "${${OUTPUT_LIST}}" PARENT_SCOPE)
|
||||
endforeach()
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction()
|
||||
endforeach ()
|
||||
endif ()
|
||||
endforeach ()
|
||||
endfunction ()
|
||||
|
|
Loading…
Reference in New Issue