В tkc есть различные функции для кодирования, работы с временем, сетью, последовательным портом, потоками, взаимным исключением и файловой системой. Эти интерфейсы реализованы на каждой платформе.
Если вам нужна определённая функция, которая по-разному реализована на разных платформах, сначала изучите функции, предоставляемые каждой платформой, а затем создайте общий интерфейс и реализуйте адаптер для каждой платформы. Таким образом, приложение может работать на разных платформах и код становится более читаемым.
Helper предоставляет набор функций для обработки параметров для разных платформ. Возможные значения для имени платформы:
Android и IOS не используют scons для компиляции, поэтому этот метод не применяется.
Пример:
helper.add_platform_libs("Windows", ["ws2_32"])
helper.add_platform_libs("Linux", ["pthread", "dl", "readline", "m"])
helper.add_platform_libs("Darwin", ["pthread", "dl", "readline", "m"])
add_platform_libpath(self, platform_name, APP_LIBPATH)
Пример:
helper.add_platform_libpath("Linux", ["/usr/local/lib"])
Здесь APP_LIBPATH является массивом.
add_platform_cpppath(self, platform_name, APP_CPPPATH)
Пример:
helper.add_platform_libpath("Linux", ["/usr/local/include"])
Здесь APP_CPPPATH является массивом.
add_platform_ccflags(self, platform_name, APP_CCFLAGS)
Пример:
helper.add_platform_ccflags("Linux", " -DSOME_MACRO=1 ")
ccflags имеет строковый формат, а не массив.
add_platform_cxxflags(self, platform_name, APP_CXXFLAGS)
Пример:
helper.add_platform_cxxflags("Linux", " -DSOME_MACRO=1 ")
cxxflags имеет строковый формат, а не массив.
add_platform_linkflags(self, platform_name, APP_LINKFLAGS)
linkflags имеет строковый формат, а не массив.
Хотя эти макросы могут различать разные платформы, если они разбросаны по всему приложению, код будет выглядеть некрасиво и трудночитаемо. Рекомендуется сначала определить интерфейс, а затем использовать эти макросы в адаптере.
Пример:
#ifdef ANDROID
#include "SDL.h"
#endif /*ANDROID*/
#if defined(__APPLE__) || defined(LINUX)
#include <unistd.h>
#include <dirent.h>
#include <sys/types.h>
#include <pwd.h>
#elif defined(WIN32)
#include <stdio.h>
#include <windows.h>
#include <io.h>
#include <direct.h>
#include <Shlobj.h>
#include <fileapi.h>
#define unlink _unlink
#define rename MoveFileA
#define ftruncate _chsize
#include "./dirent.inc"
#include "tkc/utf8.h"
#include "tkc/mem.h"
#endif
#if defined(__APPLE__)
#include <mach-o/dyld.h>
#endif /*__APPLE__*/
Некоторые файлы нужны только для определённых платформ, и можно решить, какие файлы добавить, исходя из названия платформы.
Пример:
import platform;
OS_NAME=platform.system()
if OS_NAME == 'Windows':
sources=Glob('src/windows/*.c')
elif OS_NAME == 'Linux':
sources=Glob('src/linux/*.c')
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )