我想链接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
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目录的路径 运行配置:操纵器
仍然没有工作。我在互联网上找到了工作实例,但我不理解它们(即他们创建了一些指令,不知道为什么)。
答案 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变量