CMake: jak ustawić LDFLAGS w Cmakelistach.txt?

Ustawiłem CFLAGS w CMake przez CMAKE_C_FLAGS. Czy coś takiego ma ustawiać LDFLAGS?

Author: RzR, 2011-05-21

5 answers

To zależy trochę od tego, co chcesz:

A) jeśli chcesz określić, do których bibliotek linkować, możesz użyć find_library, aby znaleźć biblioteki, a następnie użyć link_directories i target_link_libraries do.

Oczywiście często warto napisać dobry skrypt find_package , który ładnie dodaje "zaimportowane" biblioteki z add_library( YourLib IMPORTED ) z poprawnymi lokalizacjami, oraz specyficzne dla platformy/budowania pre - i sufiksy. Ty następnie można po prostu odwołać się do 'YourLib' i użyć target_link_libraries.

B) jeśli chcesz określić poszczególne flagi linkera, np.'- mthreads 'lub'-WL,--export-all-symbols ' z MinGW-GCC, możesz użyć CMAKE_EXE_LINKER_FLAGS . Istnieją również dwa podobne, ale nieudokumentowane flagi dla modułów, bibliotek współdzielonych lub statycznych:

CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
 45
Author: André,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-11 22:34:50

Spójrz na:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
 19
Author: tibur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-10 18:37:21

Można określić flagi linkera w target_link_libraries .

 5
Author: Simon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-22 05:48:19

Aby połączyć się z bibliotekami zobacz odpowiedź Andre .

Dla FLAG linkera - następujące 4 zmienne CMake:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

Można łatwo manipulować dla różnych konfiguracji (debug, release...) z makrem ucm_add_linker_flags z makra ucm

 3
Author: onqtam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:44

Jeśli chcesz dodać flagę do KAŻDEGO linku, np. -fsanitize=address to nie polecam używania CMAKE_*_LINKER_FLAGS. Nawet z nimi wszystkimi ustawionymi nadal nie używa flagi podczas łączenia frameworka na OSX, a może w innych sytuacjach. Zamiast tego użyj link_libraries():

add_compile_options("-fsanitize=address")
link_libraries("-fsanitize=address")
To działa na wszystko.
 3
Author: Timmmm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-04 09:48:49