【问题标题】:Cmake link library target link errorCmake链接库目标链接错误
【发布时间】:2019-02-25 14:45:19
【问题描述】:

您好,我对使用 cmake 的链接 Glfw 和其他库有疑问。 从命令行我像这样编译

g++ main.cpp -lGL -lGLU -lGLEW -lglfw

但我想使用 cmake 进行编译。我尝试使用 target_linkg_libraries 但这会产生错误

CMakeLists.txt:18 (target_link_libraries) 处的 CMake 错误:不能 为不是由此构建的目标“GL”指定链接库
项目。

我尝试使用添加定义来做到这一点。我没有看到错误,但这没有链接库。

cmake_minimum_required (VERSION 2.6)
project (test)

find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)

ADD_DEFINITIONS(
    -lGL
    -lGLU
    -lGLEW
    -lglfw
)

add_executable(test.out
    main.cpp
)

target_link_libraries(GL GLU GLEW glfw)

【问题讨论】:

  • ADD_DEFINITIONS 用于额外定义而不是用于库,然后尝试add_libraries()
  • 未知命令 add_libraries

标签: c++ opengl cmake glut glew


【解决方案1】:

target_link_libraries 的语法是:

target_link_libraries(your_executable_name libraries_list)

而且您不必添加add_definition 语句(target_link_libraries 添加此选项)

OpenGL 和 GLEW 包也提供了一些有用的变量。

你的 CMakeLists.txt 应该是这样的:

cmake_minimum_required (VERSION 2.6)
project (test)

find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)

include_directories(${OPENGL_INCLUDE_DIR} ${GLEW_INCLUDE_DIRS})

add_executable(test
    main.cpp
)

target_link_libraries(test ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES})

要记住的一个重要细节是将target_link_libraries 放在 add_executable(或add_library)行之后。

【讨论】:

  • 一个重要的细节是将target_link_libraries 放在 add_executable find_package 行之后,因此所有链接的组件都是已知的。
  • .. 或者,如果您正在创建库,请将其放在 add_library 之后。
  • 我如何知道名称是 PKGNAME_INCLUDE_DIR 还是 PKGNAME_INCLUDE_DIRS ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 2015-12-11
相关资源
最近更新 更多