如何Objective C的代码添加到FireBreath项目?(How do I add Obje

2019-06-28 00:48发布

我写的Mac OS浏览器插件,将放置一个状态栏图标状态栏,用户可以使用与浏览器插件接口。 我已经成功地建成了XCode 4.4.1 FireBreath 1.6项目,可以在浏览器中安装。 然而,使用FireBreath C ++,而大部分的Mac OS的现有的库的写入目标C.

在/Mac/projectDef.make文件,我添加了可可框架和基础框架,建议在这里和其他资源,我在网上查到:

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'
...

再这样下去,这一段时间,类似的错误...

从我读过,这些错误出现,因为在基础框架,我相信我已经包含在项目的依赖。 我也尝试一下在Xcode项目

我给点现在在哪里我不知道下一个尝试的东西。 人们说这是不是很难在C / C ++代码中使用目标C,但作为新的XCode和目标C可能有助于我的困惑。 这仅仅是4,我在这个新平台上的一天。

我需要什么做的就是XCode中编译目标C代码? 请记住,我有点新本,所以如果你把详细的解答,而不是模糊的俏皮话,在常见我会感激firebreath标签。 我只是有点超过我的头,但如果你可以让我过去,这关我敢肯定我会很好的从那里走。

更新:

我编辑的项目/为myplugin /的CMakeLists.txt,并在.M和.mm规则有太多增加。 运行prepmac.sh后,这些文件都包含在这个项目,但我仍然会得到相同的编译错误。

我从obj的C代码到为myplugin根文件夹移动所有的.h文件和.mm文件,并重新进行了prepmac.sh文件。 问题依然存在。 相同的编译错误。

Answer 1:

你的问题是,你有被列入由具有客观的C型和/或包含它们的C ++文件.h文件。 为了做到你想要的所有的类由用于c ++需要要么把所有的obj c相关的东西,在#ifdef来或者根本就没有OBJ c。在头文件揭露什么。

例如,你可以在你的头使用IFDEF:

#ifdef __OBJC__
     // Objective C / C++ code here
#endif

重要的是要记住,.h文件是包括和头文件,所以其实包括很重要的。 如果您在.cpp文件目标C代码编译器会产生混乱而哭泣。


编辑:要记住的最重要的事情是,你需要确保任何客观的C头文件(或其他文件与目标C代码)不从cpp文件包括在内。 如果你能做到,你会没事的。



文章来源: How do I add Objective C code to a FireBreath Project?