CMake: build for windows with vcpkg

This commit is contained in:
Jan Mrna
2025-10-16 09:33:24 +02:00
parent bc65b05854
commit f982c3b55f
2 changed files with 31 additions and 10 deletions

View File

@@ -25,18 +25,16 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Platform-specific package finding # Platform-specific package finding
if(WIN32) if(WIN32)
# Windows: Use vcpkg-compatible find_package # Windows: Use vcpkg-compatible find_package with CONFIG
# Note: These packages should be installed via vcpkg: find_package(SDL3 CONFIG REQUIRED)
# vcpkg install sdl3 sdl3-image glew opengl gtest find_package(SDL3_image CONFIG REQUIRED)
find_package(SDL3 REQUIRED)
find_package(SDL3_image REQUIRED)
find_package(OpenGL REQUIRED) find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED) find_package(GLEW REQUIRED)
find_package(GTest REQUIRED) find_package(GTest CONFIG REQUIRED)
# Set vcpkg target names for consistent linking # Set vcpkg target names for consistent linking
set(SDL3_TARGET SDL3::SDL3) set(SDL3_TARGET SDL3::SDL3)
set(SDL3_IMAGE_TARGET SDL3_image::SDL3_image) set(SDL3_IMAGE_TARGET $<IF:$<TARGET_EXISTS:SDL3_image::SDL3_image-shared>,SDL3_image::SDL3_image-shared,SDL3_image::SDL3_image-static>)
set(GLEW_TARGET GLEW::GLEW) set(GLEW_TARGET GLEW::GLEW)
else() else()
# Linux/Unix: Use pkg-config # Linux/Unix: Use pkg-config
@@ -109,9 +107,15 @@ if(WIN32)
${GLEW_TARGET} ${GLEW_TARGET}
) )
# Copy resources after build (Windows only)
add_custom_command(TARGET pathfinding_demo POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/cpp/resources
$<TARGET_FILE_DIR:pathfinding_demo>/resources
)
# Add compile flags for Windows (vcpkg handles most of this automatically) # Add compile flags for Windows (vcpkg handles most of this automatically)
if(MSVC) if(MSVC)
# vcpkg sets most flags automatically, but we can add SDL3 specific ones if needed
if(SDL3_CFLAGS_OTHER) if(SDL3_CFLAGS_OTHER)
target_compile_options(pathfinding_demo PRIVATE ${SDL3_CFLAGS_OTHER}) target_compile_options(pathfinding_demo PRIVATE ${SDL3_CFLAGS_OTHER})
endif() endif()
@@ -131,7 +135,11 @@ endif()
# Test executable # Test executable
add_executable(tests cpp/test/test.cpp) add_executable(tests cpp/test/test.cpp)
target_link_libraries(tests GTest::gtest GTest::gtest_main) if(WIN32)
target_link_libraries(tests GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main)
else()
target_link_libraries(tests GTest::gtest GTest::gtest_main)
endif()
# Enable testing # Enable testing
enable_testing() enable_testing()

13
CMakePresets.json Normal file
View File

@@ -0,0 +1,13 @@
{
"version": 2,
"configurePresets": [
{
"name": "vcpkg",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
}
}
]
}