CMake: build for windows with vcpkg
This commit is contained in:
@@ -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
13
CMakePresets.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user