运行make之后,不要制定目标'更新macOS和xcode后查找openGL框架时出错

时间:2017-09-29 21:55:33

标签: macos opengl cmake

经过短暂的中断,我回到了一个学校项目。但是,我无法再进行构建了。我们获得了以下cmake文件:

cmake_minimum_required(VERSION 2.8)

PROJECT(astro)
SET(VTK_DIR /Users/hank/Hartree/VTK/install/lib/cmake/vtk-6.0)

find_package(VTK REQUIRED)
include(${VTK_USE_FILE})

add_executable(astro MACOSX_BUNDLE astro)

SET(CMAKE_CXX_LINK_FLAGS "-framework OpenGL")
if(VTK_LIBRARIES)
  target_link_libraries(astro ${VTK_LIBRARIES})
else()
  target_link_libraries(astro vtkHybrid)
endif()

运行cmake并尝试使用make编译项目后,出现以下错误:

  

***没有规则制作目标>' /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Deve> loper / SDKs / MacOSX10.12.sdk / System / Library /框架/ OpenGL.framework',>需要' astro.app/Contents/MacOS/astro'。停止。

我认为我在项目休息期间更新了我的操作系统和xcode,这导致了问题。我不太了解cmake或makefiles,但我认为openGL的路径不知何故搞砸了。通过我的文件系统,我找到了路径

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk

我已经能够在这些目录中找到OpenGL框架,但是没有MacOSX10.12.sdk目录。

我发现了以下类似的问题herehere。但是,我没有使用Qt,当我运行xcode-select -p时,它会打印正确的路径/Applications/Xcode.app/Contents/Developer

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

从源代码安装应用程序时收到完全相同的错误。我通过复制

中的“MacOSX10.13.sdk”目录解决了这个问题
{{1}}

并将其重命名为“MacOSX10.12.sdk”。

我不是MacOSX或cmake的专家,因此我的答案可能不是最佳解决方案,甚至可能会导致问题,但它确实为我解决了这个问题。如果有人知道正确的方法,我想知道。

以下是我的尝试:

开始时,cmake在配置后找不到“CMAKE_OSX_SYSROOT”。

  1. 我首先将cmake设置更改为

    CMAKE_OSX_DEPLOYMENT_TARGET:STRING = 10.12 CMAKE_OSX_SYSROOT:STRING = macosx10.13

  2. 但这不起作用。同样的错误。

    1. 然后我将Mac更新为MacOSX 10.13 High Sierra。这次cmake可以正确设置

      CMAKE_OSX_SYSROOT:PATH = /应用/ Xcode.app /内容/开发商/平台/ MacOSX.platform /开发商/软件开发工具包/ MacOSX10.13.sdk

    2. 但仍会产生相同的错误。因此,我认为问题来自应用程序源代码。

      1. 我用谷歌搜索了如何安装MacOSX10.12.sdk并找到这篇文章:SDKs。 最简单的方法是从TimeMachine中找到旧的sdk。但我刚买了我的Mac,它没有旧版本的sdk。因此,我只需复制并重命名sdk即可尝试,并且可以正常工作。我认为将真正的MacOSX10.12.sdk的sym链接放在文件夹中将是解决此问题的最佳方法。