C++ 使用cmake在windows上编译glfw

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

我不知道如何命名这个,它很不令人满意。无论如何,问题是:

我想在VisualStudio中创建一个必须使用glfw的CMake项目。但是,我不想使用预编译的二进制文件,我想使用CMakeLists.txt文件将glfw与我的应用程序一起编译

这是我的CMake文件:

# 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上不存在。有人知道如何跳过此文件或以其他方式链接吗


谢谢。

我看到的可能是重复的,问题是我是一个学习开发人员,所以我不知道把那个文件放在哪里。你能帮我吗?你到底在哪个文件中得到这个错误?您使用什么版本的GLFWunistd.h。让我提醒一下,我没有使用预编译的二进制文件。版本应该是3.2.1,或者至少是最新的版本之一。有问题的文件是x11_platform.h,它要求大量缺少的文件。
x11_platform.h
这就是问题所在;您可能缺少一个生成配置。MS Windows上没有X11。因此,您需要构建WIn32API并禁用X11支持。
target_link_libraries(${PROJECT_NAME} glfw)