无法在qtcreator中链接GLFW

时间:2014-12-17 22:54:33

标签: opengl cmake qt-creator glfw

我想链接GLFW。我已经安装了: sudo apt-get install cmake make g ++ libx11-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxext-dev 然后我用2个子目录构建(cmake out source build)和libs(用于外部库)创建目录。 从构建目录中我使用命令" cmake运行cmake .."

主目录中的CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
project(MyProject) # project name

#version number
set(MyProject_Version_Major 1) #numer wersji glowny
set(MyProject_Version_Minor 0) #numer wydania

find_package(OpenGL REQUIRED)#when not found skip script

# add external subdirectory with another cmake file
add_subdirectory (libs)

include_directories(
libs/glfw-3.0.4/include/GLFW/
)

set(allLibs
${OPENGL_LIBRARY}
${GLFW_LIBRARIES}
)

add_executable(Manipulator main.cpp)

target_link_libraries(Manipulator ${allLibs})

libs目录中的CMakeLists.txt

GLFW

add_subdirectory (glfw-3.0.4)

include_directories(
glfw-3.0.4/include/GLFW/
)

if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(OPENGL_LIBRARY
${OPENGL_LIBRARY}
${GLFW_LIBRARIES}
)

从官方文档中我得到了信息:

  

add_subdirectory(path / to / glfw) - 完成,主目录CMakeList.txt

     

为了能够在代码中包含GLFW标头,您需要告诉我们   编译器在哪里找到它。

     

include_directories(path / to / glfw / include)done,主目录CMakeList.txt

     

将GLFW添加到项目后,GLFW_LIBRARIES缓存   变量包含GLFW的所有链接时依赖性   目前配置。要链接到GLFW,请链接到它们和   glfw目标。

     

target_link_libraries(myapp glfw $ {GLFW_LIBRARIES})完成,主目录CMakeList.txt

     

请注意,GLFW_LIBRARIES不包含GLU,因为GLFW不使用   它。如果您的应用程序需要GLU,您可以将其添加到列表中   与OPENGL_glu_LIBRARY缓存变量的依赖关系,即   在GLFW CMake文件查找OpenGL时隐式创建。

     

target_link_libraries(myapp glfw $ {OPENGL_glu_LIBRARY}已完成,主目录CMakeList.txt   $ {GLFW_LIBRARIES})

仍然没有工作,得到以下错误:

  

错误:GLFW / glfw3.h:没有这样的文件或目录#include   

我使用的是QTCreator 3.0.1,Ubuntu 14.02 Ubuntu 14.04 lts。

在QTCreator中,我指定了主要的CMakeLists.txt目录,构建目录(与源不同) 构建目录 - 构建目录主目录/构建的路径 工作目录 - 主CMakeLists.txt目录的路径 运行配置:操纵器

仍然没有工作。我在互联网上找到了工作实例,但我不理解它们(即他们创建了一些指令,不知道为什么)。

1 个答案:

答案 0 :(得分:0)

现在它起作用。

主要CMakeLists.txt

cmake_minimum_required(VERSION 2.6) #minimum CMake version
project(MyProject) #project name


set(MyProject_Version_Major 1) #project version
set(MyProject_Version_Minor 0) 


find_package(OpenGL REQUIRED) #find opengl library - stops when not found


add_subdirectory (libs) # add another directory to project(contain glfw library)

#include glfw
include_directories(
libs/glfw-3.0.4/include
)

# create variable to store all libraries
set(allLibs
${GLFW_LIBRARIES}
)


#create Manipulator executable from main.cpp file
add_executable(Manipulator main.cpp)


#links alllibs variable with my executable
target_link_libraries(Manipulator glfw ${allLibs})

libs子目录中的CMakeLists.txt。

### GLFW ###

add_subdirectory (glfw-3.0.4)

include_directories(
glfw-3.0.4/include/GLFW/
)

tl; dr -

我用这个:     target_link_libraries(Manipulator $ {allLibs}) 而不是这个:     target_link_libraries(Manipulator glfw $ {allLibs}) 忘了glfw变量