|
1 | 1 | cmake_minimum_required(VERSION 4.0.0)
|
2 | 2 |
|
3 |
| -################################################################################# |
4 |
| -#### Set up the vcpkg toolchain, which must be done before the project() function. |
5 |
| -# You can also set it up by default through the CMakePresets.json file |
6 |
| -# requires the VCPKG_ROOT environment variable |
7 |
| -# The TO_CMAKE_PATH here is used to convert back slashes to forward slashes |
| 3 | +# 请自行设置模块实验性标准 |
| 4 | +# set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "......") |
| 5 | + |
8 | 6 | file(TO_CMAKE_PATH "$ENV{VCPKG_ROOT}" VCPKG_CMAKE_PATH)
|
9 | 7 | set(CMAKE_TOOLCHAIN_FILE "${VCPKG_CMAKE_PATH}/scripts/buildsystems/vcpkg.cmake")
|
10 |
| -################################################################################# |
11 | 8 |
|
12 |
| -project(HelloVulkan LANGUAGES CXX) |
| 9 | +project(HelloCppModule LANGUAGES CXX) |
13 | 10 |
|
14 | 11 | set(CMAKE_CXX_STANDARD 23)
|
| 12 | +set(CMAKE_CXX_MODULE_STD 1) |
15 | 13 |
|
16 |
| -################################################################################# |
17 |
| -#### Search for Vulkan package. |
18 |
| -# CMake provides FindVulkan support, but requires the VULKAN_SDK environment variable |
19 |
| -# Setting by default during Vulkan SDK installation, such as E: \ Vulkan \ 1.4.309.0 |
20 |
| -find_package(Vulkan REQUIRED) |
21 |
| -################################################################################# |
| 14 | +include(cmake/VulkanHppModule.cmake) |
22 | 15 |
|
23 |
| -################################################################################# |
24 |
| -#### add_executable |
25 |
| -# Import third-party libraries through vcpkg |
26 | 16 | find_package(glfw3 CONFIG REQUIRED)
|
27 | 17 | find_package(glm CONFIG REQUIRED)
|
28 | 18 | find_package(Stb REQUIRED)
|
29 | 19 | find_package(tinyobjloader CONFIG REQUIRED)
|
30 | 20 |
|
31 |
| -# Add executable program targets |
32 |
| -add_executable(${PROJECT_NAME} src/main.cpp) |
33 |
| - |
34 |
| -target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::Vulkan ) |
35 |
| -target_link_libraries(${PROJECT_NAME} PRIVATE glm::glm ) |
36 |
| -target_link_libraries(${PROJECT_NAME} PRIVATE glfw ) |
37 |
| -target_include_directories(${PROJECT_NAME} PRIVATE ${Stb_INCLUDE_DIR}) |
38 |
| -target_link_libraries(${PROJECT_NAME} PRIVATE tinyobjloader::tinyobjloader) |
39 |
| -################################################################################# |
| 21 | +file(GLOB_RECURSE CXX_CPP_FILES "src/*.cpp") |
| 22 | +file(GLOB_RECURSE CXX_MODULE_FILES "src/*.cppm" "src/*.ixx") |
| 23 | +add_executable(main ${CXX_CPP_FILES}) |
| 24 | +target_sources(main PRIVATE |
| 25 | + FILE_SET cxx_modules |
| 26 | + TYPE CXX_MODULES |
| 27 | + FILES ${CXX_MODULE_FILES} |
| 28 | +) |
| 29 | + |
| 30 | +target_link_libraries(main PRIVATE VulkanHppModule) |
| 31 | +target_link_libraries(main PRIVATE glm::glm) |
| 32 | +target_link_libraries(main PRIVATE glfw ) |
| 33 | +target_include_directories(main PRIVATE ${Stb_INCLUDE_DIR}) |
| 34 | +target_link_libraries(main PRIVATE tinyobjloader::tinyobjloader) |
40 | 35 |
|
41 |
| -################################################################################# |
42 |
| -#### shader compilation |
43 | 36 | add_subdirectory(shaders)
|
44 |
| -################################################################################# |
| 37 | + |
0 commit comments