я новичок в этом, вы можете дать мне несколько советов?
Поэтому я хочу сделать простое мультиплатформенное приложение с SDL и QT.
Проблема в следующем:
on windows_ #include <SDL2/SDL_main.h>
on mac_ #include <SDL_main.h>
вызвать на windows все библиотеки в папках внутри «include» папки, на mac внутри / Library / Frameworks
Итак, я хочу знать, как лучше включить make … Мне нужно, чтобы на всех платформах был один вид, или существует лучший опыт? также я не использую 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?
В идеальном мире вы должны использовать один и тот же код, а система сборки должна заставить данные, связанные с системой сборки, просто работать.
Вы можете использовать следующие области в файле проекта 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
, но я все равно рекомендую решить эти проблемы на уровне buildsystem, потому что хороший исходный код важен.
Других решений пока нет …