Files
SimpleRayTracing/CMakeLists.txt
Misaki 3de6b83d32 Set C standard to C11 and add new assets
Changed CMakeLists.txt to set the C standard to C11.
Added multiple binary image files for new visual assets.
Added several new image files to enhance rendering capabilities.
Changed stb_image.h to improve support for various image formats.
Changed ray tracing engine to enhance ray creation and intersection.
Changed triangle structure to use a vertex array for better attribute handling.
Changed scene initialization to accommodate new texture management.
2025-04-29 01:43:52 +09:00

76 lines
2.2 KiB
CMake

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
cmake_minimum_required(VERSION 3.10)
set(CMAKE_C_STANDARD 11)
set(PROJECT_NAME SimpleRayTracer)
project(${PROJECT_NAME} LANGUAGES C)
find_package(OpenMP REQUIRED)
set(EXTERNAL_DIR "${CMAKE_SOURCE_DIR}/external")
set(SOURCE_DIR "${CMAKE_SOURCE_DIR}/source")
set(HEADER_DIR "${CMAKE_SOURCE_DIR}/header")
set(LIBRARY_PATH "${CMAKE_SOURCE_DIR}/lib")
# Recursively find all .c files in the Sources directory
file(GLOB_RECURSE SOURCES "${SOURCE_DIR}/*.c")
add_executable(${PROJECT_NAME} WIN32 ${SOURCES})
# Include directories
target_include_directories(${PROJECT_NAME} PRIVATE ${EXTERNAL_DIR})
target_include_directories(${PROJECT_NAME} PRIVATE ${HEADER_DIR})
# Define imported target for cglm
add_library(cglm_shared SHARED IMPORTED)
set_target_properties(cglm_shared PROPERTIES
IMPORTED_LOCATION "${LIBRARY_PATH}/cglm.dll"
IMPORTED_IMPLIB "${LIBRARY_PATH}/cglm.lib"
INTERFACE_INCLUDE_DIRECTORIES "${EXTERNAL_DIR}/cglm"
)
# Define imported target for assimp
add_library(assimp_shared SHARED IMPORTED)
set_target_properties(assimp_shared PROPERTIES
IMPORTED_LOCATION "${LIBRARY_PATH}/assimp-vc143-mt.dll"
IMPORTED_IMPLIB "${LIBRARY_PATH}/assimp-vc143-mt.lib"
INTERFACE_INCLUDE_DIRECTORIES "${EXTERNAL_DIR}/assimp"
)
target_link_libraries(${PROJECT_NAME} PRIVATE
cglm_shared
assimp_shared
)
# target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBRARY_PATH}/cglm.lib)
# target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBRARY_PATH}/assimp-vc143-mt.lib)
if(OpenMP_C_FOUND)
target_link_libraries(${PROJECT_NAME} PRIVATE OpenMP::OpenMP_C)
endif()
set_target_properties(${PROJECT_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
if(WIN32)
add_custom_command(
TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_RUNTIME_DLLS:${PROJECT_NAME}>
$<TARGET_FILE_DIR:${PROJECT_NAME}>
VERBATIM
COMMAND_EXPAND_LISTS
)
endif()
add_custom_command(
TARGET ${PROJECT_NAME} PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/assets
$<TARGET_FILE_DIR:${PROJECT_NAME}>/assets
)
file(COPY ${CMAKE_SOURCE_DIR}/assets DESTINATION ${CMAKE_BINARY_DIR})