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

时间:2013-12-31 18:19:31

标签: 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。

实施例 MAC:

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

#include <SDL.h>

视窗:

*.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路径的东西?

1 个答案:

答案 0 :(得分:2)

在理想的世界中,您应该使用相同的代码,而构建系统应该使构建系统相关的数据正常工作。

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

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

等...

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

#include <SDL_main.h>

我建议省略模块前缀,因为这可能会隐藏构建系统中的错误。话虽如此,在某些项目中,无论对某人看起来更合理,都需要遵循惯例。

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

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