我是这方面的新手,你能给我一些建议吗? 所以我想用 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>
我建议省略模块前缀,因为这可能会隐藏构建系统中的错误。话虽这么说,但在某些项目中,您需要遵循惯例,而不管某些人看起来更合理。
这将确保如果您将代码移植到另一个平台,您将需要使代码更复杂,您作为维护者可能经常阅读和修改。
当然,这也有一个缺点,如果你切换到一个新的构建系统,比如 cmake
或 QBS
,你需要重新实现这个逻辑,但我仍然建议解决这些问题在构建系统层上,因为好的源代码很重要。
关于c++ - 多平台包括最佳实践 (qt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20861669/