From 576a075d309056382cadc26ddf04c9eb779114a0 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 16 Oct 2021 15:28:13 +0200 Subject: CMake: fix invproj/invgeod generation on Windows when building with an explicit configuration --- src/bin_proj.cmake | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) (limited to 'src/bin_proj.cmake') diff --git a/src/bin_proj.cmake b/src/bin_proj.cmake index 2976b3da..163303f8 100644 --- a/src/bin_proj.cmake +++ b/src/bin_proj.cmake @@ -22,10 +22,11 @@ endif() # invproj target: symlink or copy of proj executable -set(link_target "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/invproj${CMAKE_EXECUTABLE_SUFFIX}") -set(link_source "proj${CMAKE_EXECUTABLE_SUFFIX}") - if(UNIX) + + set(link_target "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/invproj${CMAKE_EXECUTABLE_SUFFIX}") + set(link_source "proj${CMAKE_EXECUTABLE_SUFFIX}") + add_custom_command( OUTPUT ${link_target} COMMAND ${CMAKE_COMMAND} -E create_symlink ${link_source} ${link_target} @@ -34,20 +35,25 @@ if(UNIX) COMMENT "Generating invproj" VERBATIM ) + + add_custom_target(invproj ALL DEPENDS ${link_target}) + + install(FILES ${link_target} DESTINATION ${BINDIR}) + else() - # symlinks are supported on Windows in cmake >= 3.17, but - # symlinks on Windows are a bit tricky, so just copy - add_custom_command( - OUTPUT ${link_target} - COMMAND ${CMAKE_COMMAND} -E copy ${link_source} ${link_target} - WORKING_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" - DEPENDS binproj - COMMENT "Generating invproj" - VERBATIM - ) -endif() + add_executable(invproj ${PROJ_SRC}) + set_target_properties(invproj + PROPERTIES + RUNTIME_OUTPUT_NAME proj) + target_link_libraries(invproj PRIVATE ${PROJ_LIBRARIES}) + target_compile_options(invproj PRIVATE ${PROJ_CXX_WARN_FLAGS}) -add_custom_target(invproj ALL DEPENDS ${link_target}) + install(TARGETS invproj + DESTINATION ${BINDIR}) -install(FILES ${link_target} DESTINATION ${BINDIR}) + if(MSVC AND BUILD_SHARED_LIBS) + target_compile_definitions(invproj PRIVATE PROJ_MSVC_DLL_IMPORT=1) + endif() + +endif() -- cgit v1.2.3