Cmake链接库目标链接错误

Luf*_*ffy 27 c++ opengl glut glew cmake

嗨我有链接Glfw和其他库使用cmake的问题.从命令行我编译如下

g++ main.cpp -lGL -lGLU -lGLEW -lglfw
Run Code Online (Sandbox Code Playgroud)

但我想用cmake进行编译.我试图使用target_linkg_libraries,但这会产生错误

CMakeLists.txt上的CMake错误:18(target_link_libraries):无法为目标"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)
Run Code Online (Sandbox Code Playgroud)

wko*_*ski 56

语法target_link_libraries是:

target_link_libraries(your_executable_name libraries_list)
Run Code Online (Sandbox Code Playgroud)

而且您不必添加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})
Run Code Online (Sandbox Code Playgroud)

记住一个重要的细节是放置target_link_libraries add_executable(或add_library)线.

  • 一个重要的细节是在`add_executable`**和**`find_package`行之后放置`target_link_libraries`**,因此所有链接的组件都是已知的. (21认同)