-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cmake: fix to use variable for the curl namespace #11629
Conversation
Follow-up to 1199308 curl#11505 Reported-by: balikalina on Github Fixes curl@1199308#r123923098 Closes #xxxxx
This patch adds the ability to build a static and shared libcurl library in a single build session. It also adds an option to select which one to use when building the curl executable. New build options: - `BUILD_STATIC_LIBS`. Default: `OFF`. Enabled automatically if `BUILD_SHARED_LIBS` is `OFF`. - `BUILD_STATIC_CURL`. Default: `OFF`. Requires `BUILD_STATIC_LIBS` enabled. Enabled automatically if building static libcurl only. - `STATIC_LIB_SUFFIX`. Default: empty. - `IMPORT_LIB_SUFFIX`. Default: `_imp` if implib filename would collide with static lib name (typically with MSVC) in Windows builds. Otherwise empty. Also: - Stop setting the `CURL_STATICLIB` macro via `curl_config.h`, and pass it directly to the compiler. This also allows to delete a condition from `tests/server/CMakeLists.txt`. - Complete a TODO by following the logic used in autotools (also for `LIBCURL_NO_SHARED`), and set `-DCURL_STATICLIB` in `Cflags:` of `libcurl.pc` for _static-only_ curl builds. - Convert an existing CI test to build both shared and static libcurl. Closes #11505
Some projects need to export alias
there is an issue about exporting the alias so could you consider please set property EXPORT_NAME instead of add_library(ALIAS)? line 222 lib/CMakeLists.txt
if added, must remove the
from CMake/curl-config.cmake.in |
Thank you, is this what you had in mind?: #11646 |
Fixes: ``` [build] Make Error at /usr/local/lib/cmake/libssh2/libssh2-config.cmake:7 (add library): [build] add library cannot create ALIAS target "libssh2::libssh2" because target [build] "libssh2: :libssh2 static" is imported but not globally visible. ``` Reported-by: bilal614 on Github Suggested-by: balikalina on Github Ref: curl/curl#11629 (comment) Ref: curl/curl#11646 Fixes: libssh2#1150 Closes #xxxx
yes, exactly |
There was an issue reported with this solution over at libssh2: libssh2/libssh2#1154 (comment) With a difference suggestion for a fix. |
if I move setting property EXPORT_NAME from lib/CMakeLists.txt to CMake/curl-config.cmake.in in a such way
receive error:
|
both CMakefiles.txt add target library (example for static)
then libcurl declares aliases
when ssh2 doesn't do this and the last they both install target so the only difference is the absence of ALIAS add_library() call in CMakeLists.txt |
Fixes: ``` [25/26] -- Found CURL: ***/build/parts/curl/install/lib64/cmake/CURL/CURLConfig.cmake (found version "8.3.0-DEV") [25/26] CMake Error at ***/build/parts/curl/install/lib64/cmake/CURL/CURLConfig.cmake:62 (add_library): [25/26] add_library cannot create ALIAS target "CURL::libcurl" because target [25/26] "CURL::libcurl_static" is imported but not globally visible. ``` Follow-up to 1199308 curl#11505 Reported-by: balikalina on Github Suggested-by: balikalina on Github Ref: curl#11629 (comment) Closes #xxxxx
Thanks for investigating @balikalina and pointing to these bits. I read docs and came up with a minimal test, but the bad news is that I couldn't reproduce, and all patch suggestions break the test, while the I closed the related PR, but feel free to discuss / investigate further in #11646. |
Replace (wrong) literal with a variable to specify the curl namespace. Follow-up to 1199308 curl#11505 Reported-by: balikalina on Github Fixes curl@1199308#r123923098 Closes curl#11629
Replace (wrong) literal with a variable to specify the curl
namespace.
Follow-up to 1199308 #11505
Reported-by: balikalina on Github
Fixes 1199308#r123923098
Closes #11629