Cmake链接库目标链接错误

问题描述 投票:23回答:1

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

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

但我想用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)
c++ opengl cmake glut glew
1个回答
54
投票

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)线之后。

© www.soinside.com 2019 - 2024. All rights reserved.