I didn't pay much attention to the CMake code. Now:
You don't need to deal with string(CONCAT ...). Normally you just need to
- treat VCPKG_<LANG>_FLAGS as CMake string (because this follows
CMAKE_<LANG>_FLAGS),
- treat as VCPKG_CMAKE_CONFIGURE_OPTIONS as CMake list, *quoting whole
list items* if needed.
i.e.
list(APPEND VCPKG_CMAKE_CONFIGURE_OPTIONS
"-DMRSID_INCLUDE_DIR=${CMAKE_CURRENT_LIST_DIR}/../sdk/MrSID_DSDK-9.5.5.5244-win32-vc17/Raster_DSDK/include"
"-DMRSID_LIBRARY=${CMAKE_CURRENT_LIST_DIR}/../sdk/MrSID_DSDK-9.5.5.5244-win32-vc17/Raster_DSDK/lib/lti_dsdk.lib"
...
)
Am 25.02.25 um 12:03 schrieb Michael Katz:
I find the quoting rules in CMake's set, string, and CONCAT to be
counter-intuitive. I wish CMake could have been built on top of
Python, JavaScript, or some other well-known language instead of being
its own strange thing.
...
string(
CONCAT x
"
\"-DMRSID_INCLUDE_DIR=${CMAKE_CURRENT_LIST_DIR}/../sdk/MrSID_DSDK-9.5.5.5244-win32-vc17/Raster_DSDK/include\""
"
\"-DMRSID_LIBRARY=${CMAKE_CURRENT_LIST_DIR}/../sdk/MrSID_DSDK-9.5.5.5244-win32-vc17/Raster_DSDK/lib/lti_dsdk.lib\""
" \"-DGDAL_USE_MRSID=ON\""
" \"-DFRMT_mrsid=ON\""
"
\"-DECW_INCLUDE_DIR=${CMAKE_CURRENT_LIST_DIR}/../sdk/ecw/Hexagon/ERDAS_ECW_JPEG_2000_SDK_5.5.0/Desktop_Read-Only/include\""
"
\"-DECW_LIBRARY=${CMAKE_CURRENT_LIST_DIR}/../sdk/ecw/Hexagon/ERDAS_ECW_JPEG_2000_SDK_5.5.0/Desktop_Read-Only/lib/vc141/Win32/NCSEcw.lib\""
" \"-DGDAL_USE_ECW=ON\""
" \"-DFRMT_ecw=ON\""
)
set(VCPKG_CMAKE_CONFIGURE_OPTIONS
"${VCPKG_CMAKE_CONFIGURE_OPTIONS} ${x}" )
set(VCPKG_CXX_FLAGS "${VCPKG_CXX_FLAGS} -DFRMT_mrsid=ON")
set(VCPKG_C_FLAGS "${VCPKG_C_FLAGS} -DFRMT_mrsid=ON")
set(VCPKG_CXX_FLAGS "${VCPKG_CXX_FLAGS} -DFRMT_ecw=ON")
set(VCPKG_C_FLAGS "${VCPKG_C_FLAGS} -DFRMT_ecw=ON")
endif()
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev