在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文件?
答案 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