CPMAddPackage( NAME corrade GITHUB_REPOSITORY mosra/corrade GIT_TAG d44ca683c12ed28fce1d27662f24edee2d7e2c6a GIT_SUBMODULES "src" EXCLUDE_FROM_ALL YES OPTIONS "BUILD_STATIC ON" "WITH_INTERCONNECT OFF" "WITH_TESTSUITE OFF" ) CPMAddPackage( NAME GLFW GITHUB_REPOSITORY glfw/glfw GIT_TAG 3.3.7 EXCLUDE_FROM_ALL YES OPTIONS "BUILD_SHARED_LIBS OFF" "GLFW_INSTALL OFF" "GLFW_BUILD_TESTS OFF" "GLFW_BUILD_EXAMPLES OFF" "GLFW_BUILD_DOCS OFF" ) CPMAddPackage( NAME magnum GITHUB_REPOSITORY mosra/magnum GIT_TAG a218ddfa9434201aaca207ea9c8e87fea91a0757 GIT_SUBMODULES "src" EXCLUDE_FROM_ALL YES OPTIONS "BUILD_STATIC ON" "BUILD_PLUGINS_STATIC ON" "WITH_GLFWAPPLICATION ON" "WITH_MESHTOOLS OFF" "WITH_TRADE OFF" "WITH_TEXT OFF" "WITH_TEXTURETOOLS OFF" ) CPMAddPackage( NAME imgui GITHUB_REPOSITORY ocornut/imgui GIT_TAG 1ee252772ae9c0a971d06257bb5c89f628fa696a EXCLUDE_FROM_ALL YES ) # Set dir for find_package(ImGui) set(IMGUI_DIR ${imgui_SOURCE_DIR}) CPMAddPackage( NAME magnum-integration GITHUB_REPOSITORY mosra/magnum-integration GIT_TAG 6fa1a7754bf8bc612befdc9ec543f8420a0111cc GIT_SUBMODULES "src" EXCLUDE_FROM_ALL YES OPTIONS "BUILD_STATIC ON" "WITH_IMGUI ON" ) CPMAddPackage( NAME imnodes GITHUB_REPOSITORY Auburn/imnodes GIT_TAG d88f99125bb72cdb71b4c27ff6eb7f318d89a4c5 GIT_SUBMODULES ".github" EXCLUDE_FROM_ALL YES DOWNLOAD_ONLY YES ) CPMAddPackage( NAME robinhoodhashing GITHUB_REPOSITORY martinus/robin-hood-hashing GIT_TAG 3.11.5 EXCLUDE_FROM_ALL YES ) # Use modules from magnum-integration since it has everything we need set(CMAKE_MODULE_PATH "${magnum-integration_SOURCE_DIR}/modules" ${CMAKE_MODULE_PATH}) find_package(Magnum REQUIRED GL GlfwApplication) find_package(MagnumIntegration REQUIRED ImGui) find_package(ImGui REQUIRED SourcesMiscCpp) # Ensure FastNoise.dll is built into the same dir as NoiseTool.exe set_target_properties(FastNoise PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ) # Bundle a better font # Configure resource file for imgui source dir variable set(NoiseTool_RESOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR}) configure_file("resources.conf" "${CMAKE_CURRENT_BINARY_DIR}/resources.conf") corrade_add_resource(NoiseTool_RESOURCES "${CMAKE_CURRENT_BINARY_DIR}/resources.conf") add_executable(NoiseTool "NoiseToolApp.cpp" "FastNoiseNodeEditor.cpp" "MeshNoisePreview.cpp" "NoiseTexture.cpp" "${imnodes_SOURCE_DIR}/imnodes.cpp" ${NoiseTool_RESOURCES} ) # Include imnodes in NoiseTool project since setting up separate cmake library with imgui dependancy was causing issues target_include_directories(NoiseTool PRIVATE "${imnodes_SOURCE_DIR}") target_link_libraries(NoiseTool PRIVATE FastNoise Magnum::Application Magnum::Shaders Magnum::SceneGraph MagnumIntegration::ImGui ImGui::SourcesMiscCpp robin_hood ) # Windows HiDPI support if(CORRADE_TARGET_WINDOWS) target_sources(NoiseTool PRIVATE WindowsHiDPI.manifest) endif() if (UNIX) target_link_options(NoiseTool PRIVATE -pthread) if(APPLE) set_property(TARGET NoiseTool PROPERTY INSTALL_RPATH "@loader_path/../lib") else() set_property(TARGET NoiseTool PROPERTY INSTALL_RPATH "\$ORIGIN/../lib") endif() endif() if (MSVC) target_compile_definitions(NoiseTool PRIVATE _CRT_SECURE_NO_WARNINGS=1) endif() set(install_targets ${install_targets} NoiseTool PARENT_SCOPE) # Make the executable a default target to build & run in Visual Studio set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT NoiseTool)