我有一个简单的C ++库,它使用一个简短的autoconf,automake和libtool来构建一个共享库对象。
现在我希望能够在我的程序中通过以下方式在运行时动态编译新代码:
我想找到运行此命令所需的命令。我可以看到运行'make -n'时使用的命令,但我真的不想尝试使用awk来搜索和替换这些命令的位!
答案 0 :(得分:2)
此问题可以分解为以下子问题:
确定如何编译程序本身(不应混合编译器和/或标志,特别是在C ++语言的情况下不应混合)。
您可以使用AC_DEFINE {{将CC
,CXX
,CFLAGS
,CXXFLAGS
和CPPFLAGS
导出到config.h
文件来执行此操作1}} autoconf
中的宏。或者,您可以使用configure.ac
和自定义AC_SUBST
将这些变量存储在您选择的文件中。
然后你召集编译器header.h.in
给他CC
和CPPFLAGS
或CFLAGS
CXX
和CPPFLAGS
。但是,如果要通过程序加载这些文件,可以考虑使用名为libltdl的Libtool库,它以跨平台的方式实现插件。
您可以考虑使用CXXFLAGS
脚本作为跨平台编译包装器,但您必须study它,因为它有点晦涩 - 有编译,链接和“安装“阶段,但它们是以跨平台的方式处理的,如果你传递libtool
参数,你需要的一些额外标志(-sharee
和其他标志)将自动传递。