macos - Clang 链接器“找不到 -lCocoa 的库”
问题描述
基于TheChernos Game Engine 系列,我尝试为 MacOSX 而不是 Windows 编写系统。
使 GLFW、glad 和 ImGui 编译后,使用 command 找不到 -lCocoa 库
ld: library not found for -lCocoa
。由于我使用 IOKit、CoreVideo 和 OpenGL 的方式相同,因此我认为当我越过这座桥时也会显示相同的错误。
在他的系列中,他使用了 premake5,这是工作空间的 premake5,涵盖了静态库和引擎的使用示例应用程序。
workspace "Neurex"
architecture "x64"
configurations {"Debug", "Release", "Dist"}
startproject "NXSandbox"
outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"
includeDir = {}
includeDir["GLFW"] = "Neurex/vendor/GLFW/include"
includeDir["glad"] = "Neurex/vendor/glad/include"
includeDir["spdlog"] = "Neurex/vendor/spdlog/include"
includeDir["imgui"] = "Neurex/vendor/imgui"
includeDir["glm"] = "Neurex/vendor/glm"
group "Dependencies"
include "Neurex/vendor/GLFW"
include "Neurex/vendor/glad"
include "Neurex/vendor/imgui"
group ""
project "Neurex"
location "Neurex"
kind "StaticLib"
language "C++"
cppdialect "C++17"
staticruntime "on"
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
pchheader "nxpch.h"
pchsource "Neurex/src/nxpch.cpp"
files
{
"%{prj.name}/src/**.h",
"%{prj.name}/src/**.cpp",
"%{prj.name}/vendor/glm/glm/**.hpp",
"%{prj.name}/vendor/glm/glm/**.inl"
}
includedirs
{
"%{prj.name}/src",
"%{includeDir.spdlog}",
"%{includeDir.GLFW}",
"%{includeDir.glad}",
"%{includeDir.imgui}",
"%{includeDir.glm}"
}
filter "system:windows"
systemversion "latest"
links
{
"GLFW",
"glad",
"imgui",
"opengl32.lib",
}
defines
{
"NX_PT_WIN",
"GLFW_INCLUDE_NONE",
"_CRT_SECURE_NO_WARNINGS"
}
filter "system:macosx"
links {
"GLFW",
"glad",
"imgui",
"Cocoa",
"CoreVideo",
"OpenGL",
"IOKit"
}
defines {
"NX_PT_OSX",
"GLFW_INCLUDE_NONE",
"_CRT_SECURE_NO_WARNINGS"
}
filter "configurations:Debug"
defines "NX_DEBUG"
symbols "on"
runtime "Debug"
filter "configurations:Release"
defines "NX_RELEASE"
optimize "on"
runtime "Release"
filter "configurations:Dist"
defines "NX_DIST"
optimize "on"
runtime "Release"
project "NXSandbox"
location "NXSandbox"
kind "ConsoleApp"
language "C++"
cppdialect "C++17"
staticruntime "on"
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
files {
"%{prj.name}/src/**.h",
"%{prj.name}/src/**.cpp"
}
includedirs {
"Neurex/vendor/spdlog/include",
"Neurex/src",
"Neurex/vendor",
"%{includeDir.glm}",
}
links {
"Neurex"
}
filter "system:windows"
systemversion "latest"
defines { "NX_PT_WIN" }
filter "system:macosx"
links {
"Cocoa",
"IOKit",
"OpenGL",
"CoreVideo"
}
defines {
"NX_PT_OSX",
"GLFW_INCLUDE_NONE",
"_CRT_SECURE_NO_WARNINGS"
}
filter "configurations:Debug"
defines "NX_DEBUG"
symbols "On"
runtime "Debug"
filter "configurations:Release"
defines "NX_RELEASE"
optimize "On"
runtime "Release"
filter "configurations:Dist"
defines "NX_DIST"
optimize "On"
runtime "Release"
静态库编译,沙盒提供链接问题。
我正在使用 Apple Clang v13.0.0、GNU Make 3.81、premake5.0.0 alpha 16。
解决方案
通过在框架声明中添加“.framework”解决了这个问题:
Cocoa -> Cocoa.framework
推荐阅读
- hashicorp-vault - 尽管能够提交 Nomad 作业,但无法列出 Nomad 作业/任务日志(使用相同的令牌进行身份验证)
- excel - 如何使用 excel vba 代码更改盒须图中系列的颜色?
- python - MATLAB 的“improfile”函数是否有 Python 等价物?
- c++ - 在 C++ 中加载 pytorch 模型,libtorch.dll 的问题
- python - 在 setDaemon 模式下在 python 中创建线程
- java - Spring Kafka Consumer 如何从 Avro Deserializer 异常中跳过
- java - 为什么在春季批处理中不调用拆分流?
- azure - 如何在 azure 数据工厂中删除源数据集 (JSON) 中的重复项并将数据加载到 azure SQL DB
- c# - 如何将 OpenAPI 生成器与企业代理一起使用?
- c# - 如何在我的单元测试中从原始 POST 请求中断言 StatusCode?