Je règle les CFLAGS dans CMake par CMAKE_C_FLAGS. Est-ce que quelque chose comme ceci définit LDFLAGS?
Cela dépend un peu de ce que vous voulez:
A) Si vous souhaitez spécifier les bibliothèques vers lesquelles vous souhaitez créer un lien, vous pouvez utiliser find_library pour rechercher des bibliothèques, puis utiliser link_directories et target_link_libraries .
Bien sûr, cela vaut souvent la peine d’écrire un bon script find_package , qui ajoute joliment les bibliothèques "importées" avec add_library (YourLib IMPORTED) avec les emplacements corrects et la plate-forme/construire des pré et suffixes spécifiques. Vous pouvez alors simplement vous référer à 'YourLib' et utiliser target_link_libraries.
B) Si vous souhaitez spécifier des indicateurs de lieur particuliers, par exemple '-mthreads' ou '-Wl, - export-all-symbol' avec MinGW-GCC, vous pouvez utiliser CMAKE_EXE_LINKER_FLAGS . Il existe également deux indicateurs similaires mais non documentés pour les modules, les bibliothèques partagées ou statiques:
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
Regarder:
CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
Si vous souhaitez ajouter un drapeau au lien every, par ex. -fsanitize=address
Alors je ne recommanderais pas d'utiliser CMAKE_*_LINKER_FLAGS
. Même avec tous les ensembles, le drapeau n’est toujours pas utilisé lors de la liaison d’un framework sur OSX, et peut-être dans d’autres situations. À la place, utilisez link_libraries()
:
add_compile_options("-fsanitize=address")
link_libraries("-fsanitize=address")
Cela fonctionne pour tout.
Vous pouvez spécifier les indicateurs de l'éditeur de liens dans target_link_libraries .
Pour lier des bibliothèques, voir réponse d'André .
Pour les drapeaux de l'éditeur de liens - les 4 variables CMake suivantes:
CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
peut être facilement manipulé pour différentes configs (debug, release ...) avec le cm_add_linker_flags macro de cm