我正在编写一个Mac OS浏览器插件,它将在状态栏中放置一个状态栏图标,用户可以使用它来与浏览器插件交互。我已经成功地在XCode 4.4.1中构建了一个FireBreath 1.6项目,并可以在浏览器中安装它。然而,FireBreath使用C ++,而现有的大多数Mac OS库都是用Objective C编写的。
在/Mac/projectDef.make文件中,我添加了Cocoa Framework和Foundation Framework,如此处所建议的以及我在互联网上找到的其他资源。
我重新运行了prepmac.sh,期望在XCode中创建一个新项目,其中包括我的.mm和.m文件; 但是,它们似乎被忽略了。我只看到.cpp和.h文件。我在projectDef.make文件中添加了这些文件的规则,但似乎没有任何区别。
即使我手动添加文件,仍然会出现一系列编译错误。大约有20个错误,都与文件
一段时间以来,类似的错误一直存在......根据我的阅读,这些错误是由于对Foundation Framework的依赖造成的,我相信我已经将其包含在项目中了。我还尝试在XCode中点击项目。现在我已经不知道该尝试什么了。人们说,在C/C++代码中使用Objective C并不难,但对XCode和Objective C都很新的我可能会导致困惑。对我来说,这只是第4天接触这个新平台。我需要做什么才能让XCode编译Objective C代码呢?请记住,我对此还有点陌生,所以我希望你能留下详细的答案,而不是常见于firebreath标签的模糊提示。我有点头疼,但如果你能帮我解决这个问题,我相信我就可以顺利完成后面的工作了。
更新:
我编辑了projects/MyPlugin/CMakeLists.txt文件,并在其中添加了.m和.mm规则。在运行prepmac.sh之后,这些文件被包含在项目中,但我仍然遇到相同的编译错误。
我将所有的.h文件和.mm文件从Obj C代码移动到了MyPlugin根目录,并重新运行了prepmac.sh文件。问题仍然存在。仍然是相同的编译错误。
在/Mac/projectDef.make文件中,我添加了Cocoa Framework和Foundation Framework,如此处所建议的以及我在互联网上找到的其他资源。
target_link_libraries(${PROJECT_NAME}
${PLUGIN_INTERNAL_DEPS}
${Cocoa.framework} # added line
${Foundation.framework} # added line
)
我重新运行了prepmac.sh,期望在XCode中创建一个新项目,其中包括我的.mm和.m文件; 但是,它们似乎被忽略了。我只看到.cpp和.h文件。我在projectDef.make文件中添加了这些文件的规则,但似乎没有任何区别。
file (GLOB PLATFORM RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
Mac/[^.]*.cpp
Mac/[^.]*.h
Mac/[^.]*.m #added by me
Mac/[^.]*.mm #added by me
Mac/[^.]*.cmake
)
即使我手动添加文件,仍然会出现一系列编译错误。大约有20个错误,都与文件
NSObjRuntime.h
相关。Parse Issue - Expected unqualified-id
Parse Issue - Unknown type name 'NSString'
Semantic Issue - Use of undeclared identifier 'NSString'
Parse Issue - Unknown type name 'NSString'
...
...
Semantic Issue - Use of undeclared identifier 'aSelectorName'
...
...
Semantic Issue - Use of undeclared identifier 'aClassName'
...
一段时间以来,类似的错误一直存在......根据我的阅读,这些错误是由于对Foundation Framework的依赖造成的,我相信我已经将其包含在项目中了。我还尝试在XCode中点击项目。现在我已经不知道该尝试什么了。人们说,在C/C++代码中使用Objective C并不难,但对XCode和Objective C都很新的我可能会导致困惑。对我来说,这只是第4天接触这个新平台。我需要做什么才能让XCode编译Objective C代码呢?请记住,我对此还有点陌生,所以我希望你能留下详细的答案,而不是常见于firebreath标签的模糊提示。我有点头疼,但如果你能帮我解决这个问题,我相信我就可以顺利完成后面的工作了。
更新:
我编辑了projects/MyPlugin/CMakeLists.txt文件,并在其中添加了.m和.mm规则。在运行prepmac.sh之后,这些文件被包含在项目中,但我仍然遇到相同的编译错误。
我将所有的.h文件和.mm文件从Obj C代码移动到了MyPlugin根目录,并重新运行了prepmac.sh文件。问题仍然存在。仍然是相同的编译错误。