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 $ $ VERBATIM COMMAND_EXPAND_LISTS ) endif() add_custom_command( TARGET ${PROJECT_NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/assets $/assets ) file(COPY ${CMAKE_SOURCE_DIR}/assets DESTINATION ${CMAKE_BINARY_DIR})