c++ cmake clion

c++ - Cómo agregar el indicador del compilador “-l”(ell) en CMake



clion (2)

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

Para pasar una biblioteca en un proyecto CMake, debe 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 las bibliotecas o su plataforma pueden agregar, es decir:

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

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

make VERBOSE=1

Trabaja en Ubuntu 16

g++ main.cpp -lpq comando g++ main.cpp -lpq para g++ main.cpp -lpq 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 obtener 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_FLAGS con el indicador -lpq .

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

¿Cómo agregar correctamente las banderas del compilador al archivo cmake?


El indicador -l es para enlazador , no para compilador . Este indicador se utiliza para vincular con bibliotecas. CMake tiene un comando especial target_link_libraries para ese propósito:

target_link_libraries(day_g pq)