# This file is automatically generated from cmake.toml - DO NOT EDIT # See https://github.com/build-cpp/cmkr for more information cmake_minimum_required(VERSION 3.15) if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) message(FATAL_ERROR "In-tree builds are not supported. Run CMake from a separate directory: cmake -B build") endif() set(CMKR_ROOT_PROJECT OFF) if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) set(CMKR_ROOT_PROJECT ON) # Bootstrap cmkr and automatically regenerate CMakeLists.txt include(cmkr.cmake OPTIONAL RESULT_VARIABLE CMKR_INCLUDE_RESULT) if(CMKR_INCLUDE_RESULT) cmkr() endif() # Enable folder support set_property(GLOBAL PROPERTY USE_FOLDERS ON) # Create a configure-time dependency on cmake.toml to improve IDE support configure_file(cmake.toml cmake.toml COPYONLY) endif() # Options option(SDKGENNY_BUILD_EXAMPLES "" OFF) option(SDKGENNY_BUILD_PARSER "" OFF) project(sdkgenny) include(FetchContent) if(SDKGENNY_BUILD_PARSER) # build-parser message(STATUS "Fetching PEGTL (3.2.7)...") FetchContent_Declare(PEGTL GIT_REPOSITORY "https://github.com/taocpp/PEGTL.git" GIT_TAG 3.2.7 GIT_SHALLOW ON ) FetchContent_MakeAvailable(PEGTL) endif() # Target: sdkgenny set(sdkgenny_SOURCES "src/array.cpp" "src/class.cpp" "src/constant.cpp" "src/detail/indent.cpp" "src/enum.cpp" "src/enum_class.cpp" "src/function.cpp" "src/generic_type.cpp" "src/namespace.cpp" "src/object.cpp" "src/parameter.cpp" "src/pointer.cpp" "src/reference.cpp" "src/sdk.cpp" "src/static_function.cpp" "src/struct.cpp" "src/type.cpp" "src/typename.cpp" "src/variable.cpp" "src/virtual_function.cpp" "include/sdkgenny.hpp" "include/sdkgenny/array.hpp" "include/sdkgenny/class.hpp" "include/sdkgenny/constant.hpp" "include/sdkgenny/detail/indent.hpp" "include/sdkgenny/enum.hpp" "include/sdkgenny/enum_class.hpp" "include/sdkgenny/function.hpp" "include/sdkgenny/generic_type.hpp" "include/sdkgenny/namespace.hpp" "include/sdkgenny/object.hpp" "include/sdkgenny/parameter.hpp" "include/sdkgenny/pointer.hpp" "include/sdkgenny/reference.hpp" "include/sdkgenny/sdk.hpp" "include/sdkgenny/static_function.hpp" "include/sdkgenny/struct.hpp" "include/sdkgenny/type.hpp" "include/sdkgenny/typename.hpp" "include/sdkgenny/variable.hpp" "include/sdkgenny/virtual_function.hpp" "include/sdkgenny_ida.hpp" "include/sdkgenny_parser.hpp" cmake.toml ) add_library(sdkgenny STATIC) target_sources(sdkgenny PRIVATE ${sdkgenny_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${sdkgenny_SOURCES}) add_library(sdkgenny::sdkgenny ALIAS sdkgenny) target_compile_features(sdkgenny PUBLIC cxx_std_23 ) if(MSVC) # msvc target_compile_options(sdkgenny PRIVATE "/permissive-" "/W4" "/w14640" ) endif() if((CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "^MSVC$") OR (CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_C_COMPILER_FRONTEND_VARIANT MATCHES "^MSVC$")) # clang target_compile_options(sdkgenny PRIVATE -Wall -Wextra -Wshadow -Wnon-virtual-dtor -pedantic ) endif() if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "GNU") # gcc target_compile_options(sdkgenny PRIVATE -Wall -Wextra -Wshadow -Wnon-virtual-dtor -pedantic ) endif() target_include_directories(sdkgenny PUBLIC "include/" ) # Target: example_car if(SDKGENNY_BUILD_EXAMPLES) # build-examples set(example_car_SOURCES "examples/car.cpp" cmake.toml ) add_executable(example_car) target_sources(example_car PRIVATE ${example_car_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_car_SOURCES}) target_link_libraries(example_car PRIVATE sdkgenny ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_car) endif() endif() # Target: example_bitfield if(SDKGENNY_BUILD_EXAMPLES) # build-examples set(example_bitfield_SOURCES "examples/bitfield.cpp" cmake.toml ) add_executable(example_bitfield) target_sources(example_bitfield PRIVATE ${example_bitfield_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_bitfield_SOURCES}) target_link_libraries(example_bitfield PRIVATE sdkgenny ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_bitfield) endif() endif() # Target: example_typename if(SDKGENNY_BUILD_EXAMPLES) # build-examples set(example_typename_SOURCES "examples/typename.cpp" cmake.toml ) add_executable(example_typename) target_sources(example_typename PRIVATE ${example_typename_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_typename_SOURCES}) target_link_libraries(example_typename PRIVATE sdkgenny ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_typename) endif() endif() # Target: example_usage if(SDKGENNY_BUILD_EXAMPLES) # build-examples set(example_usage_SOURCES "examples/usage.cpp" cmake.toml ) add_executable(example_usage) target_sources(example_usage PRIVATE ${example_usage_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_usage_SOURCES}) target_link_libraries(example_usage PRIVATE sdkgenny ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_usage) endif() endif() # Target: example_sdk if(SDKGENNY_BUILD_EXAMPLES) # build-examples set(example_sdk_SOURCES "examples/sdk.cpp" cmake.toml ) add_executable(example_sdk) target_sources(example_sdk PRIVATE ${example_sdk_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_sdk_SOURCES}) target_link_libraries(example_sdk PRIVATE sdkgenny ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_sdk) endif() endif() # Target: example_dummydata if(SDKGENNY_BUILD_EXAMPLES) # build-examples set(example_dummydata_SOURCES "examples/dummydata.cpp" cmake.toml ) add_executable(example_dummydata) target_sources(example_dummydata PRIVATE ${example_dummydata_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_dummydata_SOURCES}) target_link_libraries(example_dummydata PRIVATE sdkgenny ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_dummydata) endif() endif() # Target: example_badname if(SDKGENNY_BUILD_EXAMPLES) # build-examples set(example_badname_SOURCES "examples/badname.cpp" cmake.toml ) add_executable(example_badname) target_sources(example_badname PRIVATE ${example_badname_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_badname_SOURCES}) target_link_libraries(example_badname PRIVATE sdkgenny ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_badname) endif() endif() # Target: example_constants if(SDKGENNY_BUILD_EXAMPLES) # build-examples set(example_constants_SOURCES "examples/constants.cpp" cmake.toml ) add_executable(example_constants) target_sources(example_constants PRIVATE ${example_constants_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_constants_SOURCES}) target_link_libraries(example_constants PRIVATE sdkgenny ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_constants) endif() endif() # Target: example_multiple_inheritance if(SDKGENNY_BUILD_EXAMPLES) # build-examples set(example_multiple_inheritance_SOURCES "examples/multiple_inheritance.cpp" cmake.toml ) add_executable(example_multiple_inheritance) target_sources(example_multiple_inheritance PRIVATE ${example_multiple_inheritance_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_multiple_inheritance_SOURCES}) target_link_libraries(example_multiple_inheritance PRIVATE sdkgenny ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_multiple_inheritance) endif() endif() # Target: example_parser if(SDKGENNY_BUILD_EXAMPLES) # build-examples if(SDKGENNY_BUILD_PARSER) # build-parser set(example_parser_SOURCES "examples/parser.cpp" cmake.toml ) add_executable(example_parser) target_sources(example_parser PRIVATE ${example_parser_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_parser_SOURCES}) target_link_libraries(example_parser PRIVATE sdkgenny ) target_link_libraries(example_parser PRIVATE taocpp::pegtl ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_parser) endif() endif() endif() # Target: example_generictype if(SDKGENNY_BUILD_EXAMPLES) # build-examples set(example_generictype_SOURCES "examples/generictype.cpp" cmake.toml ) add_executable(example_generictype) target_sources(example_generictype PRIVATE ${example_generictype_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_generictype_SOURCES}) target_link_libraries(example_generictype PRIVATE sdkgenny ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_generictype) endif() endif() # Target: example_childstruct if(SDKGENNY_BUILD_EXAMPLES) # build-examples set(example_childstruct_SOURCES "examples/childstruct.cpp" cmake.toml ) add_executable(example_childstruct) target_sources(example_childstruct PRIVATE ${example_childstruct_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_childstruct_SOURCES}) target_link_libraries(example_childstruct PRIVATE sdkgenny ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_childstruct) endif() endif() # Target: example_nestedstruct if(SDKGENNY_BUILD_EXAMPLES) # build-examples if(SDKGENNY_BUILD_PARSER) # build-parser set(example_nestedstruct_SOURCES "examples/nestedstruct.cpp" cmake.toml ) add_executable(example_nestedstruct) target_sources(example_nestedstruct PRIVATE ${example_nestedstruct_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${example_nestedstruct_SOURCES}) target_link_libraries(example_nestedstruct PRIVATE sdkgenny ) target_link_libraries(example_nestedstruct PRIVATE taocpp::pegtl ) get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) if(NOT CMKR_VS_STARTUP_PROJECT) set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT example_nestedstruct) endif() endif() endif()