阅读this post和this article我启动并运行了第一个PHP扩展程序。
以下是我使用的文章中的config.m4
文件(为了清楚起见,我保留了文章中相同的vehicles
和car
类名称,尽管我的真实课程有所不同名称):
PHP_ARG_ENABLE(vehicles,
[Whether to enable the "vehicles" extension],
[ --enable-vehicles Enable "vehicles" extension support])
if test $PHP_VEHICLES != "no"; then
PHP_REQUIRE_CXX()
PHP_SUBST(VEHICLES_SHARED_LIBADD)
PHP_ADD_LIBRARY(stdc++, 1, VEHICLES_SHARED_LIBADD)
PHP_NEW_EXTENSION(vehicles, vehicles.cc car.cc, $ext_shared)
fi
我现在需要的是移动另一级代码组织,如下所示:
a)将car
班级移动到与其他车辆类别(truck
,bus
等)共同的车辆类别文件夹中。
b)为所有这些类构建共享库
c)从PHP中调用共享库类
所以,我会有以下目录结构:
vehicles -> src
= .cpp类和包含文件
vehicles -> lib
= vehicle.so共享库
如何修改config.m4
以使用此结构,考虑所有车辆类包括原始路径中的文件,并包括共享.so库到最终构建。
感谢您的帮助。
答案 0 :(得分:1)
PHP_ADD_LIBRARY_WITH_PATH
完成了这个伎俩。根据需要多次使用它(用于添加多个库)。
最终代码:
PHP_ARG_ENABLE(vehicles,
[Whether to enable the "vehicles" extension],
[ --enable-vehicles Enable "vehicles" extension support])
if test $PHP_VEHICLES != "no"; then
PHP_ADD_LIBRARY_WITH_PATH(libraryname1, /etc/whatever_path_to_library, VEHICLES_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(libraryname2, /etc/whatever_path_to_library, VEHICLES_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(libraryname3, /etc/whatever_path_to_library, VEHICLES_SHARED_LIBADD)
PHP_REQUIRE_CXX()
PHP_SUBST(VEHICLES_SHARED_LIBADD)
PHP_ADD_LIBRARY(stdc++, 1, VEHICLES_SHARED_LIBADD)
PHP_NEW_EXTENSION(vehicles, vehicles.cc car.cc, $ext_shared)
fi