autoconf - 未找到 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
配置.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
生成文件.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
变量,automake 将继续假设它inz
是从inz.c
. 但是你没有那个文件,所以它失败了。
推荐阅读
- c++ - Visual Studio 代码调试:源代码然后在同一个 shell 上启动
- python - 训练修改后的全连接神经网络
- sql - T-SQL 数据透视表复制
- epplus - 如何构建 EPPlus 库的文档?
- macos - 使用 sed 在文件末尾添加新行
- r - 是否可以使用汽车中的 qqPlot 进行自定义分发?
- kubernetes - 使用 kubectl 获取 kubernetes apiserver prometheus 指标?
- python - 为什么 TimeSensor Operator 给我这个错误
- maven - Travis CI - Maven 构建 - 默认跳过测试
- css - 显示内联块不水平增长,子级填充百分比