如何在 CMake 中添加“-l”(ell)编译器标志
How to add "-l" (ell) compiler flag in CMake
工作 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 文件?
Flag -l
用于 linker,不适用于 compiler。此标志用于 link 与库。为此,CMake 有特殊的命令 target_link_libraries:
target_link_libraries(day_g pq)
-lq 不是编译器标志 (CFLAGS),而是 linker 标志。
要在 CMake 项目中传递库,您应该使用:
target_link_libraries(target_name libraries...)
请注意,如果您指定 'q' 作为库,项目将 link 和 libq.a 或者,如果您在 windows q.dll.
...在您的 CMakeLists.txt 中要添加的正确行是:
target_link_libraries(day_g pq)
另请注意,当您添加 CFLAG 时,您还应该 "remember" 之前可能由图书馆或您的平台添加的那些,即:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
要检查 cmake 传递给编译器或 linker 的确切标志,您始终可以 运行,从构建目录中执行以下命令:
make VERBOSE=1
工作 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 文件?
Flag -l
用于 linker,不适用于 compiler。此标志用于 link 与库。为此,CMake 有特殊的命令 target_link_libraries:
target_link_libraries(day_g pq)
-lq 不是编译器标志 (CFLAGS),而是 linker 标志。
要在 CMake 项目中传递库,您应该使用:
target_link_libraries(target_name libraries...)
请注意,如果您指定 'q' 作为库,项目将 link 和 libq.a 或者,如果您在 windows q.dll.
...在您的 CMakeLists.txt 中要添加的正确行是:
target_link_libraries(day_g pq)
另请注意,当您添加 CFLAG 时,您还应该 "remember" 之前可能由图书馆或您的平台添加的那些,即:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
要检查 cmake 传递给编译器或 linker 的确切标志,您始终可以 运行,从构建目录中执行以下命令:
make VERBOSE=1