Skip to content

Commit 20c481f

Browse files
committed
WIP: Conform GDCM to use CMAKE_*OUTPUT_DIRECTORY
Add GDCM support for modern CMAKE_*_OUTPUT_DIRECTORY variables. Removes setting legacy CMake cache variables. Internlly GDCM still uses the legacy names.
1 parent fd4e069 commit 20c481f

File tree

2 files changed

+30
-15
lines changed

2 files changed

+30
-15
lines changed

Modules/ThirdParty/GDCM/src/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,6 @@ set(GDCMV2_0_COMPATIBILITY ON CACHE INTERNAL "")
6363
set(GDCM_WRITE_ODD_LENGTH OFF CACHE INTERNAL "Do not change")
6464
set(GDCM_DEBUG_POSTFIX "" CACHE INTERNAL "")
6565

66-
# GDCM uses these to refer to executable and library locations
67-
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
68-
set(LIBRARY_OUTPUT_PATH ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
69-
7066
add_subdirectory(gdcm)
7167

7268
foreach(lib

Modules/ThirdParty/GDCM/src/gdcm/CMakeLists.txt

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -118,20 +118,39 @@ if(BUILD_SHARED_LIBS)
118118
endif()
119119

120120
#-----------------------------------------------------------------------------
121-
if(NOT EXECUTABLE_OUTPUT_PATH)
122-
set(EXECUTABLE_OUTPUT_PATH ${GDCM_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.")
123-
mark_as_advanced(EXECUTABLE_OUTPUT_PATH)
121+
# Compatibility with older usage of EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPUT_PATH.
122+
# This should be removed in the future.
123+
if(EXECUTABLE_OUTPUT_PATH)
124+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
125+
message(WARNING "EXECUTABLE_OUTPUT_PATH is deprecated. Use CMAKE_RUNTIME_OUTPUT_DIRECTORY instead.")
124126
endif()
125-
if(NOT LIBRARY_OUTPUT_PATH)
126-
set(LIBRARY_OUTPUT_PATH ${GDCM_BINARY_DIR}/bin CACHE PATH "Single output directory for building all libraries.")
127-
mark_as_advanced(LIBRARY_OUTPUT_PATH)
127+
if(LIBRARY_OUTPUT_PATH)
128+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH})
129+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH})
130+
message(WARNING "LIBRARY_OUTPUT_PATH is deprecated. Use CMAKE_LIBRARY_OUTPUT_DIRECTORY and CMAKE_ARCHIVE_OUTPUT_DIRECTORY instead.")
128131
endif()
129132

130-
# TODO: The following should be used for CMake 3 and beyond,
131-
# EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPUT_PATH are deprecated
132-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
133-
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH})
134-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH})
133+
if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
134+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
135+
endif()
136+
if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY)
137+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
138+
endif()
139+
if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
140+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
141+
endif()
142+
143+
# Set for legacy internal usage of EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPUT_PATH
144+
if (NOT EXECUTABLE_OUTPUT_PATH)
145+
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
146+
endif()
147+
if (NOT LIBRARY_OUTPUT_PATH)
148+
if (BUILD_SHARED_LIBS)
149+
set(LIBRARY_OUTPUT_PATH ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
150+
else()
151+
set(LIBRARY_OUTPUT_PATH ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
152+
endif()
153+
endif()
135154

136155
#-----------------------------------------------------------------------------
137156
# Adding GDCM_DATA_ROOT

0 commit comments

Comments
 (0)