添加c++;支持autotools项目? 我现在正在编写一个应用程序,在C代码中需要使用C++。我的问题是我不能通过C++代码编译。 我有两个源文件夹,CPP(只包含一个C源文件)和Src(只包含一个C++源文件)。p>

添加c++;支持autotools项目? 我现在正在编写一个应用程序,在C代码中需要使用C++。我的问题是我不能通过C++代码编译。 我有两个源文件夹,CPP(只包含一个C源文件)和Src(只包含一个C++源文件)。p>,c++,c,autotools,automake,C++,C,Autotools,Automake,我的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 bin_PROGRAMS

我的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
bin_PROGRAMS=main
main_SOURCES=main.c
bin_PROGRAMS=test
test_SOURCES=testcpp.cpp
./cpp/Makefile.am:

SUBDIRS= src cpp
bin_PROGRAMS=main
main_SOURCES=main.c
bin_PROGRAMS=test
test_SOURCES=testcpp.cpp
./src/Makefile.am:

SUBDIRS= src cpp
bin_PROGRAMS=main
main_SOURCES=main.c
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

如果我是你的皮肤,我就不会把这个项目分割成子磁盘文件,因为它只属于一个目标(“tste”)

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

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
然后运行: A本地和自动更改和自动生成 /配置 制造

以下是一些好的链接:


我认为您可能转录了错误的内容—src包含一个cpp文件,而cpp只包含一个.c文件。也许你可以将你的测试项目签入github(或类似的),这样人们就可以更容易地查看和尝试它了?你觉得,我真的搞错了。听起来像是你在跟踪?不过,autotools项目的结构通常是递归的。如果有理由,它应该是递归的。它甚至不是“禁止”或“必须”重复出现的。在这个例子中,我看不出这样复杂的原因。不过,也许@bixuehujin简化了问题,提出了问题。