当我使用 Xcode 构建包库时,输出是一个结构化目录,其格式为 bundlename.bundle,其中内部是 Contents 目录、Info.plist 和 MacOS 目录,其中包含包文件。
我想知道在不需要 Xcode 的情况下构建相同的输出。我想了解实现它的必要步骤,以便使用 .pro 文件在 QtCreator 上复制此行为。
有任何想法吗?
当我使用 Xcode 构建包库时,输出是一个结构化目录,其格式为 bundlename.bundle,其中内部是 Contents 目录、Info.plist 和 MacOS 目录,其中包含包文件。
我想知道在不需要 Xcode 的情况下构建相同的输出。我想了解实现它的必要步骤,以便使用 .pro 文件在 QtCreator 上复制此行为。
有任何想法吗?
为了构建一个MH_BUNDLE
你需要做的就是将-bundle
参数传递clang
给-dynamiclib
.
例子
库(捆绑)文件源(t.c
)
int add(int a, int b)
{
return a + b;
}
测试文件源 ( m.c
)
int add(int a, int b);
int main()
{
return add(5, 7);
}
创建捆绑包
$ clang -bundle -o t.bundle t.c
检查它是否是一个使用file
$ file t.bundle
t.bundle: Mach-O 64-bit bundle x86_64
检查它是否是一个MH_BUNDLE
使用clang
$ clang -c m.c -o m.o && clang -o m m.o t.bundle
ld: can't link with bundle (MH_BUNDLE) only dylibs (MH_DYLIB) file 't.bundle' for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)