正确的Xcode设置
Proper Xcode settings
我有Xcode 5.1.1,正在尝试创建一个项目来为OSX构建我的应用程序。
应用程序的结构如下:
我有一个静态链接库(.a),两个动态链接库(.dlib),它依赖于静态链接库,一个动态库(.dlib),它取决于这两个动态库和使用这一个动态库可执行二进制文件(.dlib.)
在Xcode中,我转到"Xcode->Preferences->Derived Data(Advanced)"更改了输出目录。在那里我选择了"自定义->相对于工作区"。这样,所有的东西都会放在一个地方。
现在的问题是:我很难将".a"库添加到一个".dylib".中
我在Xcode窗口的左上角选择了一个目标,以便显示构建属性。然后在"搜索"窗口中,我键入了"其他链接器标志"。然后,我在"构建设置窗口"中选择了"其他链接器标志",并键入了"-ldbinterface.a"。在试图编译时,我遇到了一个错误:"ld:library not found for-libdbinterface-a"。
接下来,我尝试添加以下行:"-L/Users/igorkorot/dbhandler/dbhandler/Build/Products/Debug"到"其他链接器标志"。但我也犯了同样的错误。
接下来,我尝试删除这两行,并在"其他链接器标志"中添加"libdbinterface.a"。这次我得到了:"clang:error:没有这样的文件或目录"。
作为参考,该文件确实存在:
Igors-MacBook-Air:Debug igorkorot$ pwd
/Users/igorkorot/dbhandler/dbhandler/Build/Products/Debug
Igors-MacBook-Air:Debug igorkorot$ ls -la
total 384
drwxr-xr-x 3 igorkorot staff 102 Mar 26 18:37 .
drwxr-xr-x@ 3 igorkorot staff 102 Mar 26 18:36 ..
-rw-r--r-- 1 igorkorot staff 193528 Mar 26 18:37 libdbinterface.a
我做错了什么?在我的情况下,添加静态库的正确方法是什么?
谢谢。
如果静态库的文件名为:
libdbinterface.a
然后,您需要通过剥离前导lib
和文件扩展名(.a
)将其指定为-l
链接器选项:
-ldbinterface
然而,我看到了未来的问题,因为我认为您可能会发现重复的符号定义(链接器错误或运行时问题),因为静态库中的符号将出现在两个动态库中。
有两种解决方法:
- 使静态库成为动态库
编译动态库时,符号默认隐藏设置为是(在生成设置代码生成下),并且只通过使用注释方法来显示要导出的符号:
__attribute__ ((visibility ("default")))
你通常会用宏来做:
#define EXPORT __attribute__ ((visibility ("default")))
在函数/变量声明中,只有使用以下形式:
extern EXPORT void aFunction(int someParam);
注意:Objective-C类不需要这样做,但C++可能需要这样做(我记不清了)。
- ld:bind_at_load和-bitcode_bundle(Xcode设置ENABLE_bitcode=YES)不能
- 适用于 macOS 的 Xcode 应用程序。这就是我设置从USB麦克风输入获取音频的方式。一年前工作,现在没有了。为什么
- 设置 Xcode 标志以便将 python 嵌入我的C++项目中
- 我在哪里可以在Mac/XCode中设置libpcap库
- 我如何将文件夹设置为XCode中的全局,类似于Visual Studio
- 如何在 OS X 上正确设置 googleTest,除了 XCode
- 当设置-fno-elide构造函数时,clang Xcode 4.4.1是否有错误
- 找不到 Xcode 构建设置 - GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS
- 正确的Xcode设置
- Xcode:如何使用库设置C++项目
- 如何设置Xcode来代替Qt Creator
- 在cocos2d中设置特定时间的缩放Xcode
- Qt创建者-项目错误:Xcode设置不正确.您可能需要通过运行/usr/bin/xcodebuild来确认许可协议
- 如何使用SDL1.2在Xcode 6中设置SDL_gfx
- 如何在c++中使用XCode 4.2设置OpenGL项目?
- c++, Mac OS X, Xcode 8: Compile Boost:设置部署目标为OS X 10.11
- 使用XCODE 4.6.1的boost -什么是正确的构建设置
- cmake + xcode:错误"未定义PRODUCT_NAME构建设置"
- 如何在Xcode上设置一个文件,只构建在设备上,而不是模拟器上
- 在Xcode 5上设置Cocos2d-x