如何添加" -l" CMake中的(ell)编译器标志

时间:2017-03-31 08:51:39

标签: c++ cmake clion

在Ubuntu 16上工作

我使用g++ main.cpp -lpq命令编译我的小项目。现在我使用 Clion 并且想要对g++做同样的事情。但我无法在 cmake 文件中添加编译器标志并出现编译错误。

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})

此外,我只运行cmake文件并使用 -lpq 标记获取CMAKE_CXX_FLAGS

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

如何正确地将编译器标志添加到cmake文件?

2 个答案:

答案 0 :(得分:7)

标记sentence = "I am a yellow fish" sentence_list = sentence.lower().split() individuals = [] for i in sentence_list: if i in individuals: print ("yes") sentence_list.remove(i) else: individuals.append(i) sentence_list.remove(i) print ("individuals", individuals) print ("sentence_list", sentence_list) 用于链接器,而不用于编译器。此标志用于与库链接。为此目的,CMake有特殊命令target_link_libraries

-l

答案 1 :(得分:1)

-lq不是编译器标志(CFLAGS),而是链接器标志。

要在CMake项目中传递库,您应该使用:

target_link_libraries(target_name libraries...)

请注意,如果您指定' q'作为库,项目将链接到libq.a,或者,如果你在Windows q.dll上。

...在您的CMakeLists.txt中,要添加的正确行是:

target_link_libraries(day_g pq)

另请注意,当您添加CFLAG时,您还应该记住"以前可能由图书馆或您的平台添加的,即:

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

要检查cmake传递给编译器或链接器的确切标志,您始终可以从构建目录运行以下命令:

make VERBOSE=1