C++ 将源添加到现有的automake程序
我想编辑现有软件以添加新的源文件(source.cpp)。 但是,我无法管理编译过程(它似乎是自动生成的,看起来非常复杂) 软件(iperf 2:)使用经典的C++ 将源添加到现有的automake程序,c++,c,makefile,automake,C++,C,Makefile,Automake,我想编辑现有软件以添加新的源文件(source.cpp)。 但是,我无法管理编译过程(它似乎是自动生成的,看起来非常复杂) 软件(iperf 2:)使用经典的/configuremake编译,然后make install 如果我只是将该文件添加到相应的源和include目录,则会收到以下错误消息: Settings.cpp:(.text+0x969) : undefined reference to ... 看起来makefile无法生成与我的新源文件(source.cpp)关联的输出文件。
/configure
make
编译,然后make install
如果我只是将该文件添加到相应的源和include目录,则会收到以下错误消息:
Settings.cpp:(.text+0x969) : undefined reference to ...
看起来makefile无法生成与我的新源文件(source.cpp)关联的输出文件。所以,我可能需要在某个地方手动指示它
我在项目文件中搜索了一下,似乎要编辑的文件是:“Makefile.am”。
我将我的源代码添加到该文件中的变量iperf\u SOURCES
,但它不起作用
你能帮我找到我需要指出我的新源文件的文件吗(这似乎是一个相当标准的编译方案,但我从来没有使用过automake软件,这个看起来非常复杂)
提前感谢您正如您已经了解的,此项目是使用autotools构建的 makefile由automake生成。它在通常具有
am
文件扩展名的文件中进行输入
iperf程序由从src/makefile.am
生成的makefile生成。这表现在:
bin_PROGRAMS = iperf
要构建的二进制文件的所有源文件(实际上这是一种简化,但在本例中保持不变)都位于相应的name\u SOURCES变量中,因此在本例中iperf\u SOURCES
。只需将源文件添加到该列表的末尾,如下所示(保留其格式):
现在,为了在将来生成的任何src/Makefile
中反映此更改,您需要运行automake。这将修改src/Makefile.in
,这是configure
末尾的config.sub
用于生成实际Makefile的模板
运行automake的方式多种多样:
- 如果您已经有了在配置之后生成的makefile,那么这些makefile应该负责重新构建它们自己。但这似乎有时会失败
- 您可以手动运行automake(在顶级目录中)。我从来没有这样做过,因为有更好的解决方案
- 在顶级目录中运行
(可能会将autoreconf--install
添加到参数中)。这将重新生成整个构建系统,调用所有需要的程序,例如autoheader、autoconf,当然还有automake这是我最喜欢的解决方案。--force
# in top level dir
mkdir build
cd build
../configure # arguments
make # should now also compile and link your new source file
您的新源文件位于某个新目录中,还是与现有源文件一起?如果更改了层次结构,则需要在make文件中更新该层次结构。否,source.cpp与以前的源位于同一目录中。我在makefile.am中添加源代码的方式与其他文件相同。有时一个makefile调用另一个makefile,该makefile编译某个不同/相同模块的源文件。您正在编辑正确的makefile吗?在makefile中的“Mptcp.cpp”和“\”之间添加一个空格,并尝试一下。您可以提供所有的makefiles和./configure file?'autoeconf--install'效果很好。谢谢你的回答:)
# in top level dir
mkdir build
cd build
../configure # arguments
make # should now also compile and link your new source file