微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

找不到programname.c的规则

如何解决找不到programname.c的规则

我正在尝试在我的项目中运行automake和autoconf。但是,当我运行make时,出现错误“ inz.o不需要任何规则来制作inz.c”。但是我的项目中没有inz.c。我猜可能是由于配置错误,但这是我第一次使用autoconf / automake,所以我想请教。我在Linux下运行 结构如下:

inz (main folder)
-configure.ac
-inz.cbp
-inz.depend
-inz.layout
-Makefile.am
--src\main.cpp
--src\main.hpp
--src\packetcapture.cpp
--src\packetcapture.hpp
--src\packetprocess.cpp
--src\packetprocess.hpp
--src\Makefile.am

configure.ac:

AC_INIT([inz],1.0)
AC_CONfig_AUX_DIR([build])
AM_INIT_AUTomake
AC_PROG_CC
AC_CONfig_HEADERS([config.h])
AM_INIT_AUTomake([-Wall -Werror foreign])
AC_CONfig_FILES([Makefile src/Makefile])
AC_OUTPUT

Makefile.am:

SUBDirs = src
dist_doc_DATA = README.md

src \ Makefile.am:

bin_PROGRAMS = inz
inz_sources = main.cpp packetcapture.cpp packetprocess.cpp
include_HEADERS = main.hpp packetcapture.hpp packetprocess.hpp

用于编译项目本身的命令:(它还使用-lndpi -lpthread和-lpcap)

g++ -Wall -std=c++0x -Wunused -g -Wno-deprecated-declarations -Iinclude -I./ -c /inz/src/main.cpp -o obj/Debug/src/main.o
g++ -Wall -std=c++0x -Wunused -g -Wno-deprecated-declarations -Iinclude -I./ -c /inz/src/packetcapture.cpp -o obj/Debug/src/packetcapture.o

我运行来配置automake / autoconf的命令(从主文件夹):

autoreconf --install
cd build
../configure
make

解决方法

您需要注意变量名,因为它们区分大小写。

您要声明inz_sources,但这不是automake的特殊变量。 inz_SOURCES是。

没有特殊的_SOURCES变量,自动制作将继续假定inz是从inz.c构建的。但是您没有该文件,因此它失败了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。