OSX 如何使用位于当前工作目录或子目录中的 GCC/G++ 编译框架 C/C++

OSX How to compile a framework using GCC/G++ sitting in a current working directory or subdirectory C/C++

希望这是一件好事。但是由于我前一阵子费了好大劲才弄明白,而且还没有在堆栈溢出时看到它,所以我想我会 post 问题和答案。

此 question/solution 供 OSX 用户使用 GCC 或 G++ 编译框架,而无需在其系统的以下路径中安装框架

/System/Library/Frameworks/

此代码将从问题中列出的目录编译一个框架。 (之前回答过)How to compile a C program that uses a Framework without using Xcode

gcc ...  -framework frameworkName a.c b.c ... -o out

此代码将从自定义目录编译框架。 (据我所知,之前没有回答过)。下面的例子dir/file。

/alt/path/to/framework/frameworkName.framework

.

FLAGS+="-F /alt/path/to/framework/ -framework frameworkName rpath /alt/path/to/framework/"
gcc ...  $FLAGS a.c b.c ... -o out

这将是工作目录的子目录示例。我知道 ./ 通常是惯例,但我不记得它是否对我有用。

FLAGS+="-F $(PWD)/alt/path/to/framework/ -framework frameworkName rpath $(PWD)/alt/path/to/framework/"
gcc ...  $FLAGS a.c b.c ... -o out 

这是/System/Library/Frameworks/路径和$(PWD)/alt/path/to/framework/路径在同一个编译中的组合。

FLAGS+="-F $(PWD)/alt/path/to/framework/ -framework frameworkName2 rpath $(PWD)/alt/path/to/framework/"
gcc ...  -framework frameworkName1 $FLAGS a.c b.c ... -o out

如果有人确实在堆栈溢出中找到这个 answer/question,我会立即删除我的 'question'。这样做的目的是为我以外的人提供框架的可移植性。如何?因为如果框架在工作目录中,它可以很容易地随 files/folder 本身移动。这显然不是人们正在尝试的常见事情,但也许它会让某人开心。