Skip to content

Commit ae83114

Browse files
Augment CMakeLists.txt & Fix generated config file (#6396)
* Fix generated CMake file * Make optional dependencies consistent Co-authored-by: Vasilis Vryniotis <[email protected]>
1 parent bd5f1e3 commit ae83114

File tree

2 files changed

+54
-17
lines changed

2 files changed

+54
-17
lines changed

CMakeLists.txt

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ set(CMAKE_CXX_STANDARD 14)
44
file(STRINGS version.txt TORCHVISION_VERSION)
55

66
option(WITH_CUDA "Enable CUDA support" OFF)
7+
option(WITH_PNG "Enable features requiring LibPNG." ON)
8+
option(WITH_JPEG "Enable features requiring LibJPEG." ON)
79
option(USE_PYTHON "Link to Python when building" OFF)
810

911
if(WITH_CUDA)
@@ -18,17 +20,23 @@ if(WITH_CUDA)
1820
endif()
1921
endif()
2022

23+
find_package(Torch REQUIRED)
24+
25+
if (WITH_PNG)
26+
add_definitions(-DPNG_FOUND)
27+
find_package(PNG REQUIRED)
28+
endif()
29+
30+
if (WITH_JPEG)
31+
add_definitions(-DJPEG_FOUND)
32+
find_package(JPEG REQUIRED)
33+
endif()
34+
2135
if (USE_PYTHON)
2236
add_definitions(-DUSE_PYTHON)
2337
find_package(Python3 REQUIRED COMPONENTS Development)
2438
endif()
2539

26-
find_package(Torch REQUIRED)
27-
find_package(PNG REQUIRED)
28-
find_package(JPEG REQUIRED)
29-
add_definitions(-DJPEG_FOUND)
30-
add_definitions(-DPNG_FOUND)
31-
3240
function(CUDA_CONVERT_FLAGS EXISTING_TARGET)
3341
get_property(old_flags TARGET ${EXISTING_TARGET} PROPERTY INTERFACE_COMPILE_OPTIONS)
3442
if(NOT "${old_flags}" STREQUAL "")
@@ -82,7 +90,15 @@ FOREACH(DIR ${ALLOW_LISTED})
8290
ENDFOREACH()
8391

8492
add_library(${PROJECT_NAME} SHARED ${ALL_SOURCES})
85-
target_link_libraries(${PROJECT_NAME} PRIVATE ${TORCH_LIBRARIES} ${PNG_LIBRARY} ${JPEG_LIBRARIES})
93+
target_link_libraries(${PROJECT_NAME} PRIVATE ${TORCH_LIBRARIES})
94+
95+
if (WITH_PNG)
96+
target_link_libraries(${PROJECT_NAME} PRIVATE ${PNG_LIBRARY})
97+
endif()
98+
99+
if (WITH_JPEG)
100+
target_link_libraries(${PROJECT_NAME} PRIVATE ${JPEG_LIBRARIES})
101+
endif()
86102

87103
if (USE_PYTHON)
88104
target_link_libraries(${PROJECT_NAME} PRIVATE Python3::Python)
@@ -92,7 +108,15 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
92108
EXPORT_NAME TorchVision
93109
INSTALL_RPATH ${TORCH_INSTALL_PREFIX}/lib)
94110

95-
include_directories(torchvision/csrc ${JPEG_INCLUDE_DIRS} ${PNG_INCLUDE_DIRS})
111+
include_directories(torchvision/csrc)
112+
113+
if (WITH_PNG)
114+
include_directories(${PNG_INCLUDE_DIRS})
115+
endif()
116+
117+
if (WITH_JPEG)
118+
include_directories(${JPEG_INCLUDE_DIRS})
119+
endif()
96120

97121
set(TORCHVISION_CMAKECONFIG_INSTALL_DIR "share/cmake/TorchVision" CACHE STRING "install path for TorchVisionConfig.cmake")
98122

cmake/TorchVisionConfig.cmake.in

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,36 @@ if(NOT (CMAKE_VERSION VERSION_LESS 3.0))
2222
# Don't include targets if this file is being picked up by another
2323
# project which has already built this as a subproject
2424
#-----------------------------------------------------------------------------
25-
if(NOT TARGET ${PN}::TorchVision)
25+
if(NOT TARGET ${PN}::${PN})
2626
include("${CMAKE_CURRENT_LIST_DIR}/${PN}Targets.cmake")
2727

28-
if(NOT TARGET torch_library)
28+
target_include_directories(${PN}::${PN} INTERFACE "${${PN}_INCLUDE_DIR}")
29+
30+
if(@WITH_CUDA@)
31+
target_compile_definitions(${PN}::${PN} INTERFACE WITH_CUDA)
32+
endif()
33+
2934
find_package(Torch REQUIRED)
35+
target_link_libraries(${PN}::${PN} INTERFACE torch)
36+
37+
if(@WITH_PNG@)
38+
find_package(PNG REQUIRED)
39+
target_link_libraries(${PN}::${PN} INTERFACE ${PNG_LIBRARY})
40+
target_compile_definitions(${PN}::${PN} INTERFACE PNG_FOUND)
41+
endif()
42+
43+
if(@WITH_JPEG@)
44+
find_package(JPEG REQUIRED)
45+
target_link_libraries(${PN}::${PN} INTERFACE ${JPEG_LIBRARIES})
46+
target_compile_definitions(${PN}::${PN} INTERFACE JPEG_FOUND)
3047
endif()
48+
3149
if (@USE_PYTHON@)
3250
if(NOT TARGET Python3::Python)
3351
find_package(Python3 COMPONENTS Development)
3452
endif()
35-
endif()
36-
37-
set_target_properties(TorchVision::TorchVision PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${PN}_INCLUDE_DIR}" INTERFACE_LINK_LIBRARIES "torch;Python3::Python" )
38-
39-
40-
if(@WITH_CUDA@)
41-
target_compile_definitions(TorchVision::TorchVision INTERFACE WITH_CUDA)
53+
target_link_libraries(torch INTERFACE Python3::Python)
54+
target_compile_definitions(${PN}::${PN} INTERFACE USE_PYTHON)
4255
endif()
4356

4457
endif()

0 commit comments

Comments
 (0)