Впервые решил попробовать сделать своё расширение для php.
Парсер toml-файла:
https://github.com/Alexander1000/php-toml
Описал по образу и подобию других расширений config.m4 в котором подключаю stdc++, прокидываю флаг для используемого стандарта, а так же подключаю свою shared-библиотечку которую я использую в других своих pet-проектах (
https://github.com/Alexander1000/io-buffer)
В итоге получилось что-то вроде такого:
dnl $Id$
dnl config.m4 for extension toml
PHP_ARG_ENABLE(toml, Whether to enable the TomlPHP extension, [ --enable-toml Enable TomlPHP])
if test "$PHP_TOML" != "no"; then
dnl # --enable-toml -> check with-path
AC_MSG_CHECKING(for libio-buffer in default path)
for i in /usr/local /usr;
do
if test -r $i/lib/libio-buffer.a;
then
IO_BUFFER_DIR=$i
AC_MSG_RESULT(libio-buffer.a found in $i)
fi
done
if test -z "$IO_BUFFER_DIR";
then
AC_MSG_RESULT(not found)
AC_MSG_ERROR(Please reinstall the io-buffer distribution - io-buffer.h should be /include and libio-buffer.a should be in /lib)
fi
CXX_FLAGS="-std=c++17"
PHP_ADD_INCLUDE($IO_BUFFER_DIR/include)
PHP_SUBST(IO_BUFFER_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(io-buffer, $IO_BUFFER_DIR/lib, IO_BUFFER_SHARED_LIBADD)
PHP_SUBST(STD_SHARED_LIBADD)
PHP_REQUIRE_CXX()
PHP_ADD_LIBRARY(stdc++, "", STD_SHARED_LIBADD)
# AC_DEFINE(HAVE_IO_BUFFER,1,[ ])
PHP_NEW_EXTENSION(toml, php_toml.c, $ext_shared)
fi
А дальше пытаюсь начать её использовать в коде расширения:
// include the PHP API itself
#include <php.h>
// then include the header of your extension
#include "php_toml.h"
#include "php_toml_arginfo.h"
#include <io-buffer.h>
extern "C"
{
// some logic... see in source
}
Но при компиляции вылетает ошибка: /usr/local/include/io-buffer.h:2:10: fatal error: 'vector' file not found