diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index c0b1a093df2b..c8289aac5e65 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -30,6 +30,11 @@ target_include_directories( appslib PRIVATE $ $ $ $) +set(USE_GDALARGUMENTPARSER_H_PRECOMPILED_HEADER ON) +if (USE_GDALARGUMENTPARSER_H_PRECOMPILED_HEADER) + target_precompile_headers(appslib PRIVATE gdalargumentparser.h) +endif() + gdal_target_link_libraries(appslib PRIVATE PROJ::proj) set_property(TARGET appslib PROPERTY POSITION_INDEPENDENT_CODE ${GDAL_OBJECT_LIBRARIES_POSITION_INDEPENDENT_CODE}) @@ -44,6 +49,13 @@ include(TargetPublicHeader) target_public_header(TARGET ${GDAL_LIB_TARGET_NAME} HEADERS gdal_utils.h) if (BUILD_APPS) + if (USE_GDALARGUMENTPARSER_H_PRECOMPILED_HEADER) + add_library(binary_precompiled_headers OBJECT gdalargumentparser.cpp) + gdal_standard_includes(binary_precompiled_headers) + target_compile_options(binary_precompiled_headers PRIVATE ${GDAL_CXX_WARNING_FLAGS} ${WFLAG_OLD_STYLE_CAST}) + target_precompile_headers(binary_precompiled_headers PRIVATE gdalargumentparser.h) + endif() + # Default Apps add_executable(gdalinfo gdal_utils_priv.h gdalinfo_bin.cpp) add_executable(gdalbuildvrt gdal_utils_priv.h gdalbuildvrt_bin.cpp) @@ -128,6 +140,9 @@ if (BUILD_APPS) target_include_directories( ${UTILCMD} PRIVATE $ $ $ $) + if (USE_GDALARGUMENTPARSER_H_PRECOMPILED_HEADER) + target_precompile_headers(${UTILCMD} REUSE_FROM binary_precompiled_headers) + endif () if (MSVC) set_target_properties(${UTILCMD} PROPERTIES LINK_FLAGS "wsetargv.obj") endif ()