CMake OSX构建找到与makefile生成器和Xcode生成器

时间:2017-04-11 23:20:07

标签: xcode macos makefile cmake

我正在开发一个使用cmake的跨平台项目。

在Mac OS上,我的大多数同事使用Xcode,但我更喜欢Clion(使用makefile生成器)。在最近的提交之后,我开始出现构建错误:

<name>.h:26:8: error: unknown type name 'NSErrorDomain'

项目的Xcode版本中没有这些错误。经过进一步调查,似乎Clion使用的Unix Makefile生成的项目正在引入不同版本的SDK和NSError.h。 makefile项目中包含的版本不包含NSErrorDomain的定义。

将以下代码段添加到我的主要CMakelists.txt:

find_library(AUDIO_UNIT AudioUnit)
message ( STATUS "AUDIO_UNIT = ${AUDIO_UNIT}" )

find_path ( NSERROR "NSError.h" )
message ( STATUS "NSERROR = ${NSERROR}")

cmake -G“Unix Makefiles”../

-- AUDIO_UNIT = /System/Library/Frameworks/AudioUnit.framework
-- NSERROR = /System/Library/Frameworks/Foundation.framework/Headers

cmake -G“Xcode”../

-- AUDIO_UNIT = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioUnit.framework
-- NSERROR = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/Foundation.framework/Headers

因此,Xcode生成器项目似乎知道在Xcode应用程序包中使用SDK,但makefile只是从/ System / Library中提取。

我尝试过设置CMAKE_OSX_SYSROOT和CMAKE_OSX_DEPLOYMENT_TARGET,但它们似乎没有效果。

有没有办法告诉makefile生成器从Xcode App包中提取?

0 个答案:

没有答案