在autotools项目中添加c ++支持?

时间:2011-10-22 15:22:30

标签: c++ c autotools automake

我现在正在编写一个需要在我的c代码中使用c ++的应用程序。我的问题是我无法通过c ++代码编译。

我有两个源文件夹,cpp(仅包含一个c源文件)和src(仅包含一个c ++源文件)。

我的configure.in就像这样,非常简单

AC_PREREQ([2.68])
AC_INIT([tste], [1.0], [ee@b.com])
AC_PROG_CXX
AC_PROG_CC
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE()
AC_CONFIG_FILES([Makefile cpp/Makefile src/Makefile] )
AC_OUTPUT

./ Makefile.am:

SUBDIRS= src cpp

./ CPP / Makefile.am:

bin_PROGRAMS=main
main_SOURCES=main.c

./ SRC / Makefile.am:

bin_PROGRAMS=test
test_SOURCES=testcpp.cpp

当我使用make编译我的项目时,会发生错误:

Making all in src
make[1]: Entering directory `/home/hujin/Desktop/test/src'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/hujin/Desktop/test/src'
Making all in cpp
make[1]: Entering directory `/home/hujin/Desktop/test/cpp'
make[1]: *** No rule to make target `main.o', needed by `main'.  Stop.
make[1]: Leaving directory `/home/hujin/Desktop/test/cpp'
make: *** [all-recursive] Error 1

1 个答案:

答案 0 :(得分:1)

如果我在你的皮肤上,我不会在submakefiles中拆分该项目,因为它都会转到一个目标(“tste”)。

您最好将所有源文件放在根Makefile.am中(您可以从中生成多个输出):

# ./Makefile.am:

bin_PROGRAMS=main test

main_SOURCES=cpp/main.c
test_SOURCES=src/testcpp.cpp

将您的configure.ac更改为:

# configure.ac
AC_PREREQ([2.68])

AC_INIT([tste], [1.0], [ee@b.com])
AM_INIT_AUTOMAKE

AC_CONFIG_SRCDIR([src/testcpp.cpp])

AC_PROG_CXX
AC_PROG_CC

AC_CONFIG_FILES([Makefile])
AC_OUTPUT

然后运行:     aclocal&& autoconf&& automake的     。/配置     使

以下是一些很好的链接: