Files
aorii/src/core/CMakeLists.txt
2025-02-06 21:57:07 +08:00

49 lines
1.8 KiB
CMake

project(aorii_core)
set(CMAKE_CXX_STANDARD 26)
find_package(harfbuzz REQUIRED)
find_package(Eigen3 REQUIRED)
find_package(spdlog REQUIRED)
find_package(Boost REQUIRED)
find_package(Freetype REQUIRED)
find_package(Vulkan REQUIRED)
find_package(glfw3 REQUIRED)
if (APPLE)
find_library(COCOA_LIBRARY Cocoa)
endif ()
set(RENDERER_SOURCES "")
retrieve_files(${CMAKE_CURRENT_SOURCE_DIR} RENDERER_SOURCES)
add_library(${PROJECT_NAME} STATIC ${RENDERER_SOURCES})
target_link_libraries(${PROJECT_NAME} PUBLIC Freetype::Freetype glfw harfbuzz Eigen3::Eigen spdlog::spdlog msdfgen-full Boost::boost Vulkan::Vulkan)
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions(${PROJECT_NAME} PRIVATE NOMINMAX)
add_os_definitions(${PROJECT_NAME})
configure_glfw_native(${PROJECT_NAME})
if (APPLE)
target_link_libraries(${PROJECT_NAME} PUBLIC ${COCOA_LIBRARY})
endif ()
# 添加编译shader的自定义命令
shader_compile_target(${CMAKE_CURRENT_SOURCE_DIR}/shaders)
# 添加依赖, 当编译aorii_core时, 会先编译aorii_compile_shaders
add_dependencies(${PROJECT_NAME} aorii_compile_shaders)
# 如果需要编译example, 添加自定义命令用于拷贝shader文件
if (BUILD_EXAMPLE)
# 复制${SHADER_OUTPUT_DIR}文件到${CMAKE_CURRENT_BINARY_DIR}/example/resource/shaders
set(SOURCE_DIR ${SHADER_OUTPUT_DIR})
set(DEST_DIR ${CMAKE_BINARY_DIR}/example/resource/shaders)
# 添加自定义命令, 当外部目标compile_aorii_shaders被编译时, 将${SOURCE_DIR}文件复制到${DEST_DIR}
add_custom_command(
TARGET ${PROJECT_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${DEST_DIR}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${SOURCE_DIR} ${DEST_DIR}
COMMENT "Copying shaders to ${DEST_DIR}"
)
endif ()