包括不排除静态库项目的用户路径的路径
Include paths not excluding user path for static lib project
在 Xcode (8.3.2) 中创建新库项目,选择 Framework: STL (C++ Library),类型:静态,并将其命名为"MyLibrary"。您将获得起始文件 MyLibrary.hpp、MyLibraryPriv.hpp、MyLibrary.cpp。创建新的头文件semaphore.h,将其放在与所有其他文件相同的文件夹中。此文件应具有包含保护定义semaphore_h
。
在 MyLibrary 中添加以下行.cpp:
#include <semaphore.h>
#ifdef _BSD_SEMAPHORE_H
#warning _BSD_SEMAPHORE_H
#endif
#ifdef semaphore_h
#warning semaphore_h
#endif
我在这里包含一个系统头文件,而不是我刚刚添加的文件,但构建的结果是semaphore_h
将被写入为构建警告,这是错误的。如果我在 Finder 中重命名我的文件,那么_BSD_SEMAPHORE_H
就会被写入,因为它应该是这样。
这是一个错误吗?如何解决?我的项目中有一个与系统标题同名的标题,但我宁愿不更改名称。
奇怪的是,如果它是一个应用程序项目(命令行工具),那么它将按预期工作。#include <semaphore.h>
会导致_BSD_SEMAPHORE_H
警告,#include "semaphore.h"
会导致semaphore_h
警告。库项目的行为与应用项目不同。
为了回答我自己的问题,这是一个延伸到 Xcode 4 甚至可能更远的错误。应为静态库禁用生成选项USE_HEADERMAP("项目设置">"搜索路径">"使用标题映射">设置为"否")。然后,同名的头文件之间应该没有冲突。
该选项不会给应用程序带来问题,尽管过去显然已经习惯了。还有一个SO问题,禁用该选项是答案,但是当我第一次阅读它时,我没有意识到它也适用于我的情况。
- 如何自动获取我的项目的路径并删除一些文件
- 在路径的独立Qt项目中包括外部库
- 如何从 CLion 的运行窗口中删除程序项目路径
- 如何在Cmake中正确查找头路径,以便在我的项目中构建Box2D
- 获取位于安卓工作室中可绘制的图像的绝对路径,用于NDK项目
- 在Visual Studio Code(.json配置)中设置相对于工作区路径的c / c ++项目的包含路径
- 如何在 pybind11 项目中设置包含路径
- 在QT中的大型项目中指定构建/目标/安装路径
- 如何修复VS部署项目中的部分安装路径
- 包括不排除静态库项目的用户路径的路径
- 项目错误:无法解析'macosx'的 SDK 路径
- 我正在尝试在Eclipse中构建一个C 项目,但是即使在使用MINGW路径设置路径变量之后,也会获得构建错误
- 如何获取外部项目定义的目标的输出路径?
- 如何从 qmake 中的包含路径中删除项目的根目录
- 如何列出用于在Qt项目中包含头文件的所有路径
- 在Visual Studio C 项目中设置默认的附加包含/库路径
- 是否可以强制提升构建将子项目的包含路径添加到主项目中?
- 获取Qt项目所需的所有include路径、lib等
- "namespaced" CMake 中包含路径,并且C++项目在将项目集成在一起时是否有好处?
- Eclipse CDT从Makefile项目中采用路径