C++ 使用cmake在windows上编译glfw
我不知道如何命名这个,它很不令人满意。无论如何,问题是: 我想在VisualStudio中创建一个必须使用glfw的CMake项目。但是,我不想使用预编译的二进制文件,我想使用CMakeLists.txt文件将glfw与我的应用程序一起编译 这是我的CMake文件:C++ 使用cmake在windows上编译glfw,c++,windows,cmake,glfw,C++,Windows,Cmake,Glfw,我不知道如何命名这个,它很不令人满意。无论如何,问题是: 我想在VisualStudio中创建一个必须使用glfw的CMake项目。但是,我不想使用预编译的二进制文件,我想使用CMakeLists.txt文件将glfw与我的应用程序一起编译 这是我的CMake文件: # CMakeList.txt : CMake project for BasicMandelbrotAnimation, include source and define # project specific logic her
# CMakeList.txt : CMake project for BasicMandelbrotAnimation, include source and define
# project specific logic here.
#
cmake_minimum_required (VERSION 3.8)
project(BasicMandelbrotAnimation)
# Set the main file to main.cpp
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ENTRY:mainCRTStartup")
# Include our different directories
include_directories(include)
include_directories(source)
# Include all source files in source directory
file(GLOB SOURCE source/*)
# Compile GLFW
add_subdirectory(extlibs/GLFW)
# CMake GLFW Settings
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
# Add source to this project's executable.
add_executable (${PROJECT_NAME} ${SOURCE})
target_link_libraries(${PROJECT_NAME} glfw)
find_package(OpenGL REQUIRED)
target_include_directories(${PROJECT_NAME} PUBLIC ${OPENGL_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} ${OPENGL_gl_LIBRARY})
target_link_libraries(${PROJECT_NAME} ${OPENGL_glu_LIBRARY})
# TODO: Add tests and install targets if needed.
我得到的错误是“无法打开include文件:'unistd.h':没有这样的文件或目录”,这让我很恼火,因为这是一个UNIX文件,所以如何调整这些文件以在windows中编译
多谢各位
编辑:
这些问题看似重复,但实际上并非如此。h只是第一个问题,让我们看看有问题的文件:
#ifndef _glfw3_x11_platform_h_
#define _glfw3_x11_platform_h_
#include <unistd.h>
#include <signal.h>
#include <stdint.h>
#include <dlfcn.h>
#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <X11/Xatom.h>
#include <X11/Xcursor/Xcursor.h>
// The XRandR extension provides mode setting and gamma control
#include <X11/extensions/Xrandr.h>
// The Xkb extension provides improved keyboard support
#include <X11/XKBlib.h>
// The Xinerama extension provides legacy monitor indices
#include <X11/extensions/Xinerama.h>
#if defined(_GLFW_HAS_XF86VM)
// The Xf86VidMode extension provides fallback gamma control
#include <X11/extensions/xf86vmode.h>
#endif
执行此操作时,cmake需要x11_platform.h,这在windows上不存在。有人知道如何跳过此文件或以其他方式链接吗
谢谢。我看到的可能是重复的,问题是我是一个学习开发人员,所以我不知道把那个文件放在哪里。你能帮我吗?你到底在哪个文件中得到这个错误?您使用什么版本的GLFW
x11_platform.h
这就是问题所在;您可能缺少一个生成配置。MS Windows上没有X11。因此,您需要构建WIn32API并禁用X11支持。
target_link_libraries(${PROJECT_NAME} glfw)