From a49e3b19a3cab39ec3c1e6feee04825f10b5bc7d Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 24 Oct 2021 23:17:59 +0200 Subject: [PATCH] lib_proj.cmake: add a PROJ::proj alias and add BUILD_INTERFACE include directories, so that proj can be used as a subdirectory of a larger project (fixes #2905) --- src/lib_proj.cmake | 4 ++++ travis/install.sh | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/lib_proj.cmake b/src/lib_proj.cmake index 4ece909492..9175309f9f 100644 --- a/src/lib_proj.cmake +++ b/src/lib_proj.cmake @@ -372,6 +372,8 @@ add_library(proj ${ALL_LIBPROJ_HEADERS} ${PROJ_RESOURCES} ) +add_library(PROJ::proj ALIAS proj) + target_compile_options(proj PRIVATE $<$:${PROJ_C_WARN_FLAGS}> PRIVATE $<$:${PROJ_CXX_WARN_FLAGS}> @@ -402,6 +404,8 @@ if(ENABLE_IPO) endif() target_include_directories(proj INTERFACE + $ + $ $) if(WIN32) diff --git a/travis/install.sh b/travis/install.sh index a07e77843c..cfc297c380 100755 --- a/travis/install.sh +++ b/travis/install.sh @@ -116,6 +116,21 @@ fi if [ "$BUILD_NAME" != "linux_gcc8" -a "$BUILD_NAME" != "linux_gcc_32bit" ]; then # cmake build from generated tarball + mkdir proj_as_subproject + cd proj_as_subproject + mkdir external + ln -s $PWD/.. external/PROJ + + echo '#include "proj.h"' > mytest.c + echo 'int main() { proj_info(); return 0; }' >> mytest.c + + echo 'cmake_minimum_required(VERSION 3.9)' > CMakeLists.txt + echo 'project(mytest)' >> CMakeLists.txt + echo 'add_subdirectory(external/PROJ)' >> CMakeLists.txt + echo 'add_executable(mytest mytest.c)' >> CMakeLists.txt + echo 'target_include_directories(mytest PRIVATE $)' >> CMakeLists.txt + echo 'target_link_libraries(mytest PRIVATE PROJ::proj)' >> CMakeLists.txt + mkdir build_cmake cd build_cmake cmake --version @@ -130,7 +145,7 @@ if [ "$BUILD_NAME" != "linux_gcc8" -a "$BUILD_NAME" != "linux_gcc_32bit" ]; then else echo "Skipping test_cmake.sh test for $BUILD_NAME" fi - cd .. + cd ../.. if [ $TRAVIS_OS_NAME != "osx" ]; then # Check that we can retrieve the resource directory in a relative way after renaming the installation prefix