Cómo agregar el indicador del compilador "-l" (ell) en CMake

Resuelto Metal Evolution Studio asked hace 7 años • 2 respuestas

Trabajar en Ubuntu 16

Utilicé g++ main.cpp -lpqel comando para compilar mi pequeño proyecto. Ahora uso Clion y quiero hacer lo mismo que hago con g++. Pero no puedo agregar indicadores del compilador en el archivo cmake y obtengo un error de compilación.

cmake_minimum_required(VERSION 3.5.1)
project(day_g)

set(CMAKE_CXX_FLAGS "-lpq")

add_definitions(-lpq)

message("CMAKE_CXX_FLAGS is ${CMAKE_CXX_FLAGS}")

set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES main.cpp)
add_executable(day_g ${SOURCE_FILES})

También ejecuto solo el archivo cmake y obtengo CMAKE_CXX_FLAGSel indicador -lpq .

CMAKE_CXX_FLAGS is -lpq
-- Configuring done
-- Generating done

¿Cómo agregar correctamente los indicadores del compilador al archivo cmake?

Metal Evolution Studio avatar Mar 31 '17 15:03 Metal Evolution Studio
Aceptado

El indicador -les para el vinculador , no para el compilador . Esta bandera se utiliza para vincular con bibliotecas. CMake tiene un comando especial target_link_libraries para ese propósito:

target_link_libraries(day_g pq)
Tsyvarev avatar Mar 31 '2017 09:03 Tsyvarev

-lq no es un indicador del compilador (CFLAGS) sino un indicador del vinculador.

Para pasar una biblioteca en un proyecto CMake debes usar:

target_link_libraries(target_name libraries...)

Tenga en cuenta que si especifica 'q' como biblioteca, el proyecto se vinculará con libq.a o, si está en Windows, q.dll.

... en su CMakeLists.txt la línea correcta para agregar es:

target_link_libraries(day_g pq)

Tenga en cuenta también que cuando agrega un CFLAG también debe "recordar" los anteriores que pueden agregar las bibliotecas o su plataforma, es decir:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")

Para verificar las banderas exactas que cmake está pasando al compilador o vinculador, siempre puede ejecutar, desde el directorio de compilación, el siguiente comando:

make VERBOSE=1
gabry avatar Mar 31 '2017 09:03 gabry