CMake: ¿Cómo configurar LDFLAGS en CMakeLists.txt?

Configuré CFLAGS en CMake por CMAKE_C_FLAGS. ¿Es algo así para configurar LDFLAGS?

Depende un poco de lo que quieras:

A) Si desea especificar a qué bibliotecas vincular, puede usar find_library para buscar libs y luego usar link_directories y target_link_libraries a.

Por supuesto, a menudo vale la pena el esfuerzo escribir una buena secuencia de comandos find_package , que muy bien agrega bibliotecas “importadas” con add_library (YourLib IMPORTED) con las ubicaciones correctas, y la plataforma / comstackción pre y sufijos específicos. Luego puede simplemente referirse a ‘YourLib’ y usar target_link_libraries.

B) Si desea especificar un linker-flags particular, por ejemplo ‘-mthreads’ o ‘-Wl, – export-all-symbols’ con MinGW-GCC, puede usar CMAKE_EXE_LINKER_FLAGS . También hay dos indicadores similares pero no documentados para módulos, bibliotecas compartidas o estáticas:

CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS CMAKE_STATIC_LINKER_FLAGS 

Mirar:

 CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS CMAKE_STATIC_LINKER_FLAGS 

Puede especificar indicadores de enlazador en target_link_libraries .

Para vincularse con las bibliotecas, vea la respuesta de Andre .

Para indicadores de vinculador: las siguientes 4 variables de CMake:

 CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS CMAKE_STATIC_LINKER_FLAGS 

se puede manipular fácilmente para diferentes configuraciones (depuración, liberación …) con la macro ucm_add_linker_flags de ucm

Si desea agregar un indicador a cada enlace, por ejemplo, -fsanitize=address entonces no recomendaría el uso de CMAKE_*_LINKER_FLAGS . Incluso con todos ellos configurados, aún no usa la bandera al vincular un framework en OSX, y tal vez en otras situaciones. En su lugar, use link_libraries() :

 add_compile_options("-fsanitize=address") link_libraries("-fsanitize=address") 

Esto funciona para todo.