c++ - 多平台包括最佳实践 (qt)

标签 c++ qt sdl qmake multiplatform

我是这方面的新手,你能给我一些建议吗? 所以我想用 SDL 和 qt 制作一个简单的多平台应用程序。

问题是:

on windows_  #include <SDL2/SDL_main.h>
on mac_      #include <SDL_main.h>

导致在 Windows 上,所有库都在“include”文件夹内的文件夹中,在 Mac 上,在/Library/Frameworks 内 所以我想知道如何更好地制作包括......我是否需要在所有平台上制作一种观点或存在更好的做法?我也不为此使用 cMake。

例子 麦克:

*.Pro file
INCLUDEPATH += /Library/Frameworks/SDL2.framework/Headers
QMAKE_LFLAGS += -F/Library/Frameworks/
LIBS += -framework SDL2

#include <SDL.h>

window :

*.Pro file 
INCLUDEPATH += C:\SDL2-2.0.1\i686-w64-mingw32\include
LIBS += -L"C:\SDL2-2.0.1\i686-w64-ming32\lib" \
-lmingw32\
-lSDL2main\
-lSDL2

#include <SDL2/SDL2.h>

那么,如何更好地使 main.cpp 在所有平台上都是一条路径,或者它的存在类似于 win32 路径?

最佳答案

在理想情况下,您应该使用相同的代码,构建系统应该使构建系统相关数据正常工作。

您可以在您的 qmake 项目文件中使用以下范围:

mac: INCLUDEPATH += mac-specific-include-path
unix: INCLUDEPATH += unix-specific-include-path
win32: INCLUDEPATH += win32-specific-include-path

等...

源代码将包含这样的头文件,然后:

#include <SDL_main.h>

我建议省略模块前缀,因为这可能会隐藏构建系统中的错误。话虽这么说,但在某些项目中,您需要遵循惯例,而不管某些人看起来更合理。

这将确保如果您将代码移植到另一个平台,您将需要使代码更复杂,您作为维护者可能经常阅读和修改。

当然,这也有一个缺点,如果你切换到一个新的构建系统,比如 cmakeQBS,你需要重新实现这个逻辑,但我仍然建议解决这些问题在构建系统层上,因为好的源代码很重要。

关于c++ - 多平台包括最佳实践 (qt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20861669/

相关文章:

c++ - 使用 libmicrohttpd 处理 POST 请求

c++ - 在使用 std::stod 之前初始化 QApplication 的奇怪错误

c++ - 使用 d 指针的优点和缺点是什么?

c++ - 使用 VS 2015 编译的可执行文件比使用 2013 慢得多

c++ - 何时删除复制构造函数和赋值运算符?

c++ - 新的动态分配与正常分配

c++ - 用户定义的转换运算符到不可访问的基类

c++ - 在自定义类中重载运算符 <<(单例)

c - 像素没有被绘制到屏幕上并且无法退出。可能是 MacOSX 相关的错误?

c++ - 在 SDL2 中创建 TextureManager 的最有效方式