在多平台C++程序中包含来自平台特定路径的源
Inclusion of sources from platform specific paths in multiplatform C++ program
如何在C++中包含来自平台特定路径的多个源?我尝试执行以下操作
#include <string>
using namespace std;
#ifdef _WIN32
static const string INCLUDE_DIR = "C:\Users\......";
#else
static const string INCLUDE_DIR = "/home/.......";
#endif
#include INCLUDE_DIR + "someuserlib.h"
但它说#include expects "FILENAME" or <FILENAME>
您可以使用 MACRO:
#ifdef _WIN32
# define INCLUDE_DIR "C:\Users\......"
#else
# define INCLUDE_DIR "/home/......."
#endif
#include INCLUDE_DIR "someuserlib.h"
但使用相对路径似乎更正确(如果可能的话)
或者直接在构建链中使用包含开关:
g++ -I "C:\Users\..." ..
#include
是一个宏,因此在变量INCLUDE_DIR之前进行处理。
但更重要的是,没有必要在包含中设置反斜杠,正斜杠是所有平台的正确方法。预编译器将在内部处理差异。
从可移植性的角度来看,设置绝对路径也是一个非常糟糕的主意。它应该始终是相对的(基线可以通过构建标志单独设置)。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 如何将更多文件夹添加到c++include路径
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- C++A*算法并不总是在路径中具有目标节点
- 从函数角度看ID到文件路径的内部与外部映射
- boost xml parsingl将xml的路径作为变量发送
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- 如何使用cppcheck处理半相对包含路径
- 在C++中设置基于操作系统的文件路径
- 基于编译器选项的编译二进制路径
- 按边长度递归搜索图中所有可行路径
- 使用变量值作为 PlaySound 中的路径
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- 如何转换真实路径 CString c++
- 从 GUID 获取 USB 卷路径
- 查找 GCD:并非所有控制路径都返回值
- 在多平台C++程序中包含来自平台特定路径的源
- 如何在C++中获取特定于平台的路径分隔符
- 使用 Boost.File system 获取平台的路径分隔符
- 处理不同平台上的#include路径