1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-24 17:18:48 -05:00

cmake: Avoid leaking absolute paths into exported config

The `find_libarary` command resolves the library or framework
into an absolute path. In case of system frameworks which are
located within an Xcode-provided SDK this results in the Xcode
path and SDK version being part of the library path.

Because those library paths end up in the exported CMake config
importing curl will fail once the Xcode location or SDK version
changes:

```cmake
set_target_properties(CURL::libcurl PROPERTIES
  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
  INTERFACE_LINK_LIBRARIES "lber;ldap;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/SystemConfiguration.framework;OpenSSL::SSL;OpenSSL::Crypto;ZLIB::ZLIB"
)
```

A work-around is to link against system-level frameworks with
`-framework XYZ`. In case of `SystemConfiguration` we might be able
to omit the lookup-check because we could assume the framework is
always present.

Closes #7152
This commit is contained in:
Gregor Jasny 2021-05-31 17:10:45 +02:00 committed by Daniel Stenberg
parent a0709f9951
commit f777e752c6
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -385,7 +385,7 @@ if(CMAKE_USE_SECTRANSP)
set(SSL_ENABLED ON)
set(USE_SECTRANSP ON)
list(APPEND CURL_LIBS "${COREFOUNDATION_FRAMEWORK}" "${SECURITY_FRAMEWORK}")
list(APPEND CURL_LIBS "-framework CoreFoundation" "-framework Security")
endif()
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
@ -393,7 +393,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(NOT SYSTEMCONFIGURATION_FRAMEWORK)
message(FATAL_ERROR "SystemConfiguration framework not found")
endif()
list(APPEND CURL_LIBS "${SYSTEMCONFIGURATION_FRAMEWORK}")
list(APPEND CURL_LIBS "-framework SystemConfiguration")
endif()
if(CMAKE_USE_OPENSSL)