cmake: option to disable install & drop curlu target when unused

This patch makes the following changes:
- adds the option `CURL_DISABLE_INSTALL` - to disable 'install' targets.
- Removes the target `curlu` when the option `BUILD_TESTING` is set to
  `OFF` - to prevent it from being loaded in Visual Studio.

Closes #12287
This commit is contained in:
Charlie C 2023-11-06 14:19:00 -07:00 committed by Viktor Szakats
parent 45d2ff6f85
commit aace27b096
No known key found for this signature in database
GPG Key ID: B5ABD165E2AEF201
2 changed files with 256 additions and 246 deletions

View File

@ -105,6 +105,8 @@ option(BUILD_SHARED_LIBS "Build shared libraries" ON)
option(BUILD_STATIC_LIBS "Build static libraries" OFF)
option(BUILD_STATIC_CURL "Build curl executable with static libcurl" OFF)
option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
option(CURL_DISABLE_INSTALL "Set to ON to disable instalation targets" OFF)
if(WIN32)
option(CURL_STATIC_CRT "Set to ON to build libcurl with static CRT on Windows (/MT)." OFF)
option(ENABLE_UNICODE "Set to ON to use the Unicode version of the Windows API functions" OFF)
@ -1523,6 +1525,8 @@ if(BUILD_TESTING)
add_subdirectory(tests)
endif()
if(NOT CURL_DISABLE_INSTALL)
# Helper to populate a list (_items) with a label when conditions (the remaining
# args) are satisfied
macro(_add_if label)
@ -1779,3 +1783,4 @@ if(NOT TARGET curl_uninstall)
COMMAND ${CMAKE_COMMAND} -P
${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake)
endif()
endif()

View File

@ -47,6 +47,7 @@ if(USE_ARES)
include_directories(${CARES_INCLUDE_DIR})
endif()
if(BUILD_TESTING)
add_library(
curlu # special libcurlu library just for unittests
STATIC
@ -54,13 +55,17 @@ add_library(
${HHEADERS} ${CSOURCES}
)
target_compile_definitions(curlu PUBLIC UNITTESTS CURL_STATICLIB)
endif()
if(ENABLE_CURLDEBUG)
# We must compile these sources separately to avoid memdebug.h redefinitions
# applying to them.
set_source_files_properties(memdebug.c curl_multibyte.c PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON)
endif()
if(BUILD_TESTING)
target_link_libraries(curlu PRIVATE ${CURL_LIBS})
endif()
transform_makefile_inc("Makefile.soname" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.soname.cmake")
include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.soname.cmake)