如何解决使用 Ninja
上下文:2011 年年中 iMac、MacOS High Sierra 10.13.6、鱼终端
所以,我正在尝试构建一个应用程序,并且到目前为止我已经遵循了开发人员提供的清单。满足所有依赖关系,否则运行 Meson 将无法正常工作。开发人员说“运行 ninja -C build
或 ninja -C build install
以安装应用程序。”
我这样做了,但立即失败了。 12 错误。我认为都与 OpenGL 相关。
../Engine/Engine.vala:2.7-2.8: error: The namespace name `GL' could not be found
using GL;
^^
../Engine/Rendering/OpenGLRenderer/OpenGLFrameBuffer.vala:1.7-1.8: error: The namespace name `GL' could not be found
using GL;
^^
../Engine/Rendering/OpenGLRenderer/OpenGLRenderBuffer.vala:1.7-1.8: error: The namespace name `GL' could not be found
using GL;
^^
../Engine/Rendering/OpenGLRenderer/OpenGLRenderer.vala:1.7-1.8: error: The namespace name `GL' could not be found
using GL;
^^
../Engine/Rendering/OpenGLRenderer/Shaders/OpenGLShader.vala:1.7-1.8: error: The namespace name `GL' could not be found
using GL;
^^
../Engine/Rendering/OpenGLRenderer/Shaders/OpenGLShaderProgram2D.vala:1.7-1.8: error: The namespace name `GL' could not be found
using GL;
^^
../Engine/Rendering/OpenGLRenderer/Shaders/OpenGLShaderProgram3D.vala:1.7-1.8: error: The namespace name `GL' could not be found
using GL;
^^
../Engine/Rendering/OpenGLRenderer/OpenGLRenderer.vala:260.43-260.48: error: The type name `GLuint' could not be found
glBindTexture(GL_TEXTURE_2D,(GLuint)texture_handle.handle);
^^^^^^
../Engine/Rendering/OpenGLRenderer/OpenGLRenderer.vala:334.74-334.79: error: The type name `GLvoid' could not be found
glBufferData(GL_ARRAY_BUFFER,len * resource.points.length,(GLvoid[])resource.points,GL_STATIC_DRAW);
^^^^^^
../Engine/Rendering/OpenGLRenderer/OpenGLRenderer.vala:376.105-376.110: error: The type name `GLvoid' could not be found
glTexImage2D(GL_TEXTURE_2D,GL_SRGB_ALPHA,width,height,GL_RGBA,GL_UNSIGNED_BYTE,(GLvoid[])resource.data);
^^^^^^
../Engine/Rendering/OpenGLRenderer/OpenGLRenderer.vala:422.99-422.104: error: The type name `GLvoid' could not be found
glTexImage2D(GL_TEXTURE_2D,(GLvoid[])label.data);
^^^^^^
../Engine/Rendering/OpenGLRenderer/Shaders/OpenGLShaderProgram2D.vala:60.63-60.68: error: The type name `GLvoid' could not be found
glBufferData(GL_ARRAY_BUFFER,8 * sizeof(float),(GLvoid[])vertices,GL_STATIC_DRAW);
它在第二行代码中失败了。以下是来自 ../Engine/Engine.vala
using SDL;
using GL;
namespace Engine
{
public abstract class Engine : Object
{
Engine(bool multithread_rendering,string version_string,bool debug)
{
this.multithread_rendering = multithread_rendering;
this.debug = debug;
this.version_string = version_string;
}
还有很多,但这可能并不重要,因为它在第 2 行失败了。
现在,我对 Vala 一无所知,也不知道它是如何工作的,但根据我有限的知识,这似乎是 Vala 无法找到它要找的东西的问题。
我一直在往墙上扔东西,但没有任何东西被卡住。任何建议或指示将不胜感激
编辑 (6/7/21) 我被要求提供用于构建的 meson.build 的内容,所以这里是
project('OpenRiichi','vala','c')
# We use subdir instead of subproject so we don't have to recompile everything when we change something in libengine
subdir('Engine')
dataDir = get_option('prefix') / get_option('datadir') / 'OpenRiichi'
add_project_arguments('-DOPENRIICHI_SEARCH_DIR="' + dataDir + '"',language: 'c')
dependencies = [
valac.find_library('os',dirs: meson.current_source_dir() + '/vapi',required: false)
] + engine_dependencies
sources = files(
'source/main.vala','source/Environment.vala','source/Game/GameController.vala','source/Game/Logic/AnimationTimings.vala','source/Game/Logic/ClientAction.vala','source/Game/Logic/ClientMessage.vala','source/Game/Logic/ClientRoundState.vala','source/Game/Logic/GameLog.vala','source/Game/Logic/GamePlayer.vala','source/Game/Logic/GameStartInfo.vala','source/Game/Logic/GameState.vala','source/Game/Logic/IGameConnection.vala','source/Game/Logic/LobbyMessages.vala','source/Game/Logic/RoundLog.vala','source/Game/Logic/RoundState.vala','source/Game/Logic/ServerAction.vala','source/Game/Logic/ServerMessage.vala','source/Game/Logic/Tile.vala','source/Game/Logic/TileRules.vala','source/Game/Logic/TimeStamp.vala','source/Game/Logic/VersionInfo.vala','source/Game/MusicPlayer.vala','source/Game/Options.vala','source/Game/Rendering/GameAnimationTimings.vala','source/Game/Rendering/GameRenderView.vala','source/Game/Rendering/GameScene.vala','source/Game/Rendering/IGameRenderer.vala','source/Game/Rendering/Menu/GameEscapeMenuView.vala','source/Game/Rendering/Menu/GameMenuButton.vala','source/Game/Rendering/Menu/GameMenuView.vala','source/Game/Rendering/Menu/ScoringDoraView.vala','source/Game/Rendering/Menu/ScoringHandView.vala','source/Game/Rendering/Menu/ScoringInnerView.vala','source/Game/Rendering/Menu/ScoringPlayerElement.vala','source/Game/Rendering/Menu/ScoringPointsView.vala','source/Game/Rendering/Menu/ScoringStickView.vala','source/Game/Rendering/Menu/ScoringView.vala','source/Game/Rendering/RenderAction.vala','source/Game/Rendering/RenderCalls.vala','source/Game/Rendering/RenderHand.vala','source/Game/Rendering/RenderPlayer.vala','source/Game/Rendering/RenderPond.vala','source/Game/Rendering/RenderStick.vala','source/Game/Rendering/RenderTable.vala','source/Game/Rendering/RenderTile.vala','source/Game/Rendering/RenderWall.vala','source/Game/ServerSettings.vala','source/GameServer/Bots/Bot.vala','source/GameServer/Bots/BotConnection.vala','source/GameServer/Bots/NullBot.vala','source/GameServer/Bots/SimpleBot.vala','source/GameServer/GameState/ServerRoundState.vala','source/GameServer/GameState/ServerRoundStatePlayer.vala','source/GameServer/GameState/ServerRoundStateValidator.vala','source/GameServer/Server/Server.vala','source/GameServer/Server/ServerController.vala','source/GameServer/Server/ServerGameRound.vala','source/GameServer/Server/ServerMenu.vala','source/GameServer/Server/ServerNetworking.vala','source/GameServer/Server/ServerPlayer.vala','source/MainMenu/AboutMenuView.vala','source/MainMenu/CreateServerView.vala','source/MainMenu/InformationMenuView.vala','source/MainMenu/JoinMenuView.vala','source/MainMenu/Lobby/LobbyConnection.vala','source/MainMenu/Lobby/LobbyConnectionView.vala','source/MainMenu/Lobby/LobbyGameListControl.vala','source/MainMenu/Lobby/LobbyInformationListControl.vala','source/MainMenu/Lobby/LobbyUserListControl.vala','source/MainMenu/Lobby/LobbyView.vala','source/MainMenu/MainMenuBackgroundView.vala','source/MainMenu/MainMenuView.vala','source/MainMenu/MenuSubView.vala','source/MainMenu/MultiplayerMenuView.vala','source/MainMenu/OptionItemControl.vala','source/MainMenu/OptionsMenuView.vala','source/MainMenu/SelectGameLogMenuView.vala','source/MainMenu/ServerMenuView.vala','source/MainMenu/ServerPlayerFieldView.vala','source/MainMenu/ServerSettingsView.vala','source/MainMenu/SingleplayerMenuView.vala','source/MainWindow.vala','source/Tests/HandTests.vala',) + engine_sources
includes = [include_directories('include'),engine_includes]
executable('OpenRiichi',sources,dependencies: dependencies,include_directories: includes,gui_app: true,install: true
)
install_subdir('bin/Data',install_dir: dataDir)
我会调查相关问题,并自己做一些更多的挖掘,但现在它不再在黑暗中摸索了,所以谢谢。
编辑 2 6/7/21:
查看 meson.build 我看到了这一行,
if target_machine.system() == 'windows'
engine_dependencies += cc.find_library('opengl32')
engine_dependencies += valac.find_library('gl',dirs: engine_vapi_dir)
else
engine_dependencies += dependency('gl')
endif
这可能是罪魁祸首,因为我记得在某处读到 OpenGl 作为对 MacOS 的依赖不是“GL”而是“OpenGL”,或者后者带有一些版本号。我会沿着这条路走下去,看看它会把我引向何方。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。