我现在正在编写一个需要在我的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
答案 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的 。/配置 使
以下是一些很好的链接: