0

所以我正在使用 vc15 编译器并且很难找到允许以下错误的标志:

C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\sys/stat.h(222): error C2466: cannot allocate an array of constant size 0
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\sys/stat.h(228): error C2466: cannot allocate an array of constant size 0
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\sys/utime.h(101): error C2466: cannot allocate an array of constant size 0
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\sys/utime.h(107): error C2466: cannot allocate an array of constant size 0
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\sys/utime.h(113): error C2466: cannot allocate an array of constant size 0
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\sys/utime.h(143): error C2466: cannot allocate an array of constant size 0
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\corecrt_wtime.h(170): warning C4133: 'function': incompatible types - from 'const time_t *const ' to 'const __time32_t *'
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\corecrt_wtime.h(179): warning C4133: 'function': incompatible types - from 'const time_t *const ' to 'const __time32_t *'
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\time.h(376): warning C4133: 'function': incompatible types - from 'const time_t *const ' to 'const __time32_t *'
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\time.h(386): warning C4244: 'function': conversion from 'const time_t' to '__time32_t', possible loss of data
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\time.h(396): warning C4133: 'function': incompatible types - from 'const time_t *const ' to 'const __time32_t *'
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\time.h(407): warning C4133: 'function': incompatible types - from 'const time_t *const ' to 'const __time32_t *'
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\time.h(431): warning C4133: 'function': incompatible types - from 'time_t *const ' to '__time32_t *'
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\time.h(451): warning C4133: 'function': incompatible types - from 'const time_t *const ' to 'const __time32_t *'
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\time.h(460): warning C4133: 'function': incompatible types - from 'const time_t *const ' to 'const __time32_t *'
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt\time.h(469): warning C4133: 'function': incompatible types - from 'const time_t *const ' to 'const __time32_t *'
NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~1\2017\BUILDT~1\VC\Tools\MSVC\1416~1.270\bin\Hostx86\x86\cl.exe' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\x86\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\x86\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\x86\nmake.exe"' : return code '0x2'
Stop.

我正在使用 CMake,看起来我需要启用 Za 标志,因为我认为这是有效的 C99。但不确定如何启用它。

https://docs.microsoft.com/en-us/cpp/build/reference/za-ze-disable-language-extensions?view=vs-2019

/Za 编译器选项为与 ANSI C89/ISO C90 不兼容的 C 的 Microsoft 扩展禁用并发出错误。不推荐使用的 /Ze 编译器选项启用 Microsoft 扩展。默认情况下启用 Microsoft 扩展。

这是我的CMakeLists.txt文件在下面

https://github.com/joseph-montanez/raylib-php/blob/c0472bb2174acccb6cbdd0aad7cc73c722c7f846/CMakeLists.txt

cmake_minimum_required(VERSION 3.8)
project(raylib)

add_custom_target(makefile COMMAND phpize && ./configure -enable-debug  && make
        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})

add_custom_target(build COMMAND make WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Za /GR /Zi /W4")
add_definitions(-DZEND_WIN32 -DPHP_WIN32 -DZEND_DEBUG=0)
add_custom_target(clean-build COMMAND phpize --clean)

set(SOURCE_FILES raylib.c raylib-vector4.c raylib-vector4.h raylib-vector3.c raylib-vector3.h raylib-vector2.c raylib-vector2.h raylib-texture.c raylib-image.c raylib-texture.h raylib-image.h raylib-utils.c raylib-utils.h raylib-window.c raylib-window.h raylib-cursor.c raylib-cursor.h raylib-draw.c raylib-draw.h raylib-timming.c raylib-timming.h raylib-rendertexture.c raylib-rendertexture.h raylib-camera3d.c raylib-camera3d.h raylib-camera2d.c raylib-camera2d.h raylib-font.c raylib-font.h raylib-text.c raylib-text.h raylib-key.c raylib-key.h raylib-mouse.c raylib-mouse.h raylib-collision.c raylib-collision.h raylib-color.c raylib-color.h raylib-rectangle.c raylib-rectangle.h)

set(RAYLIB_SOURCE C:/src/raylib-2.6.0/src)
set(PHP_SOURCE C:/php-sdk/phpmaster/vc15/x64/php-src)
include_directories(${PHP_SOURCE}/main)
include_directories(${PHP_SOURCE}/Zend)
include_directories(${PHP_SOURCE}/sapi)
include_directories(${PHP_SOURCE}/pear)
include_directories(${PHP_SOURCE}/TSRM)
include_directories(${PHP_SOURCE})
include_directories(${RAYLIB_SOURCE})
include_directories(${PROJECT_SOURCE_DIR})

add_executable(raylib ${SOURCE_FILES})

我尝试使用 CXX 标志,但我猜这些标志是用于 C++ 的。我正在使用 CMake 3.15。

4

1 回答 1

0

如果要使用现代 CMake(高于 2.12 版)添加编译标志,则不应直接修改CMAKE_C_FLAGSor CMAKE_CXX_FLAGS。相反,将编译选项添加到您要构建的特定target_compile_options()目标:

target_compile_options(raylib PRIVATE /Za)
于 2020-03-02T21:18:13.560 回答