Инструменты сборки Visual Studio 2017 - невозможно выделить массив постоянного размера 0 - PullRequest
0 голосов
/ 03 марта 2020

Так что я использую компилятор 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 отключает и выдает ошибки для расширений Microsoft до C, которые отсутствуют. несовместим с ANSI C89 / ISO C90. Устаревшая опция / Ze compiler включает расширения 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.

1 Ответ

0 голосов
/ 03 марта 2020

Если вы хотите добавить флаги компиляции с современным CMake (больше, чем версия 2.12), вам не следует изменять CMAKE_C_FLAGS или CMAKE_CXX_FLAGS напрямую. Вместо этого добавьте параметры компиляции в конкретную c цель, которую вы хотите построить, используя target_compile_options():

target_compile_options(raylib PRIVATE /Za)
...