CONGE-1 - Setup that works with conan and cmake

This commit is contained in:
Jimmy Tremblay-Bernier 2024-11-21 10:00:21 -05:00
parent 1842376ddf
commit 77084729d8
9 changed files with 51 additions and 44 deletions

1
.gitignore vendored
View File

@ -10,4 +10,5 @@ CMakeCache.txt
build.ninja build.ninja
cmake_install.cmake cmake_install.cmake
CMakeCache.txt CMakeCache.txt
CMakeUserPresets.json
.ninja* .ninja*

View File

@ -1,19 +1,35 @@
cmake_minimum_required(VERSION 3.29) cmake_minimum_required(VERSION 3.29)
project(ConjureEngineProject) project(ConjureEngineProject)
set(CMAKE_CXX_STANDARD 20)
# Set the default build type to Debug if not specified by the user # Set the default build type to Debug if not specified by the user
if(NOT CMAKE_BUILD_TYPE) if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Build type (default Debug)" FORCE) set(CMAKE_BUILD_TYPE Debug CACHE STRING "Build type (default Debug)" FORCE)
endif() endif()
set(CONAN_DEPENDENCIES_DIR ${CMAKE_BINARY_DIR}/Conan) # Set architecture
if(NOT DEFINED ARCH)
set(ARCH x64) # Default to x64 architecture
endif()
execute_process(COMMAND conan install ${CMAKE_SOURCE_DIR}/ConjureEngine --output-folder=${CONAN_DEPENDENCIES_DIR} --build=missing) set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/build)
execute_process(COMMAND conan install ${CMAKE_SOURCE_DIR}/Demo1 --output-folder=${CONAN_DEPENDENCIES_DIR} --build=missing)
set(CMAKE_TOOLCHAIN_FILE "${CONAN_DEPENDENCIES_DIR}/build/Release/generators/conan_toolchain.cmake" CACHE FILEPATH "Conan toolchain file") # Include the Conan-generated files
set(CMAKE_PREFIX_PATH "${CONAN_DEPENDENCIES_DIR}/build/Release/generators" ${CMAKE_PREFIX_PATH}) list(APPEND CMAKE_PREFIX_PATH "${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/generators")
set(CMAKE_MODULE_PATH "${CONAN_DEPENDENCIES_DIR}/build/Release/generators" ${CMAKE_MODULE_PATH})
include("${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/generators/conan_toolchain.cmake")
# Set common output directories
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/intermediates/${CMAKE_BUILD_TYPE}/${ARCH}/${PROJECT_NAME})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}/${ARCH}/${PROJECT_NAME})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}/${ARCH}/${PROJECT_NAME})
# Locate packages using find_package
find_package(glm REQUIRED)
find_package(SDL2 REQUIRED)
# Add subdirectories for engine and demo
add_subdirectory(./ConjureEngine) add_subdirectory(./ConjureEngine)
add_subdirectory(./Demo1) add_subdirectory(./Demo1)

View File

@ -1,27 +1,16 @@
cmake_minimum_required(VERSION 3.29) cmake_minimum_required(VERSION 3.29)
project(ConjureEngine) project(ConjureEngine)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 20)
# Set the architecture (assuming you're passing the architecture as a CMake variable)
# Replace 'x64' with your system's architecture, or set this dynamically based on the system
if(NOT DEFINED ARCH)
set(ARCH x64) # You can change this to x86 or any other architecture you are targeting
endif()
# Set common output directories
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/intermediates/${ARCH}/${PROJECT_NAME})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/${ARCH}/${PROJECT_NAME})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/${ARCH}/${PROJECT_NAME})
find_package(glm REQUIRED) find_package(glm REQUIRED)
find_package(SDL2 REQUIRED)
find_package(Vulkan REQUIRED) find_package(Vulkan REQUIRED)
add_library(${PROJECT_NAME} STATIC src/ConjureEngine/ConjureEngine.h src/ConjureEngine/ConjureEngine.cpp) add_library(${PROJECT_NAME} STATIC src/ConjureEngine/ConjureEngine.h src/ConjureEngine/ConjureEngine.cpp)
target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS})
# Specify include directories # Specify include directories
target_include_directories(ConjureEngine PUBLIC include) target_include_directories(${PROJECT_NAME} PUBLIC include)
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_BINARY_DIR}/include)
target_link_libraries(${PROJECT_NAME} SDL2::SDL2 glm::glm)

View File

@ -1,4 +1,8 @@
#pragma once #pragma once
#include "glm/glm.hpp"
namespace ConjureEngine { namespace ConjureEngine {
void SayHello(); void SayHello();
glm::vec3& Forward();
} }

View File

@ -1,18 +1,7 @@
cmake_minimum_required(VERSION 3.29) cmake_minimum_required(VERSION 3.29)
project(Demo1) project(Demo1)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 20)
# Set the architecture (assuming you're passing the architecture as a CMake variable)
# Replace 'x64' with your system's architecture, or set this dynamically based on the system
if(NOT DEFINED ARCH)
set(ARCH x64) # You can change this to x86 or any other architecture you are targeting
endif()
# Set common output directories
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/intermediates/${ARCH}/${PROJECT_NAME})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/${ARCH}/${PROJECT_NAME})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/${ARCH}/${PROJECT_NAME})
add_executable(${PROJECT_NAME} src/main.cpp) add_executable(${PROJECT_NAME} src/main.cpp)

View File

@ -1,8 +0,0 @@
[requires]
[generators]
CMakeDeps
CMakeToolchain
[layout]
cmake_layout

8
debug.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
# Run Conan to install dependencies
conan install . -s build_type=Debug --build=missing
# Run CMake with the updated CMAKE_PREFIX_PATH
#cmake -DCMAKE_BUILD_TYPE=Debug -S . -B build
#cmake --build build

8
release.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
# Run Conan to install dependencies
conan install . -s build_type=Release --build=missing
# Run CMake with the updated CMAKE_PREFIX_PATH
#cmake -DCMAKE_BUILD_TYPE=Release -S . -B build
#cmake --build build