1

当我使用 Xcode 构建包库时,输出是一个结构化目录,其格式为 bundlename.bundle,其中内部是 Contents 目录、Info.plist 和 MacOS 目录,其中包含包文件。

我想知道在不需要 Xcode 的情况下构建相同的输出。我想了解实现它的必要步骤,以便使用 .pro 文件在 QtCreator 上复制此行为。

有任何想法吗?

4

1 回答 1

0

为了构建一个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)
于 2016-08-05T19:18:37.117 回答