生成:没有创建头文件的规则
Make: No rule to make a header file?
我正在尝试使用名为BigInt的库制作一个项目。我的文件结构是:
/Users/wen/Projects/challenge/fibonacci3/fibonacci3.cpp
/Users/wen/Projects/challenge/fibonacci3/Makefile
/Users/wen/Projects/include/bigint/<.cc files and .hh files>
/Users/wen/Projects/include/bigint/Makefile
斐波那契3 Makefile截至
LD_FLAGS =
CC_FLAGS =
# Include libraries
include /Users/wen/Projects/include/bigint/Makefile
# Build object files
%.o: %.cc %.cpp $(library-cpp)
g++ -c -o $@ $(CC_FLAGS)
# Link object files
fibonacci3: fibonacci3.o $(library-objects)
g++ -o $@ $(LD_FLAGS)
和 bigint Makefile 是 截至 (缩短)
# Mention default target.
all:
# Implicit rule to compile C++ files. Modify to your taste.
%.o: %.cc
g++ -c -O2 -Wall -Wextra -pedantic $<
# Components of the library.
library-cpp =
BigUnsigned.cc
BigInteger.cc
BigIntegerAlgorithms.cc
BigUnsignedInABase.cc
BigIntegerUtils.cc
library-objects =
BigUnsigned.o
BigInteger.o
BigIntegerAlgorithms.o
BigUnsignedInABase.o
BigIntegerUtils.o
library-headers =
NumberlikeArray.hh
BigUnsigned.hh
BigInteger.hh
BigIntegerAlgorithms.hh
BigUnsignedInABase.hh
BigIntegerLibrary.hh
但是,make
报告找不到头文件的规则?
make: *** No rule to make target `NumberlikeArray.hh', needed by `BigUnsigned.o'. Stop.
[Finished in 0.0s with exit code 2]
这是怎么回事?标头应该包含在内,而不是编译,那么为什么要要求标头呢?
提前感谢!
溶液:
不要包含生成文件,而是在我自己的生成文件中编译源代码。成功了!再次感谢。
make
程序要求所有文件都位于当前目录中。由于您将第二个生成文件包含在当前生成文件中,因此其中的所有文件也都相对于当前目录。您必须确保包含的生成文件中的文件包含正确的路径。
Make 在找不到依赖项时会给出此错误;然后它会尝试构建该依赖项,但不知道创建此头文件的规则。
您可能键入了错误的头文件的名称。
相关文章:
- 生成文件不对文件使用隐式规则
- 制作文件:没有规则来制定目标:如何设置正确的规则?
- 生成文件中隐式规则中的 -c 标志出错
- C++ 如何将两个 makefile 对象目标规则(位于另一个文件夹中)合并到一个目标/规则中?
- 生成文件匹配规则和配方中的模式
- 如何在 c c ++ 混合生成文件中为 c 对象添加附加规则?
- 无法通过 bazel 的规则成功包含外部头文件cc_library
- 在不应该应用生成文件规则时应用
- 生成文件:没有规则的依赖项不会使父项无效
- 生成文件:子目录的模式规则
- Visual Studio 2017 加载规则集文件时出错
- 在makefile中更改构建规则以构建多种文件类型
- 源外生成与目标文件的规则不匹配
- 生成:没有创建头文件的规则
- 生成文件失败,错误没有规则来设定目标
- 将 Icon 添加到可执行文件 (Eclipse CDT Luna) 时出现问题:make: *** 没有规则来制作目标 'resources.o'
- GNU 生成文件规则和依赖关系
- C++:同名的文件范围常量违反了一个定义规则
- 我如何理解这个生成文件规则的细节
- Solaris Imakefile复制文件规则