gcc makefile cmake ld ldflags

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



makefile (5)

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 find_package comandos find_package , que muy bien agrega bibliotecas "importadas" con add_library (YourLib IMPORTED) con las ubicaciones correctas, y la plataforma / compilació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


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 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.