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
Puede especificar indicadores de enlazador en target_link_libraries .
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.