当前位置: 首页 > 知识库问答 >
问题:

Makefile没有链接必要的. hpp文件

壤驷建德
2023-03-14

我需要编译一个C项目,它将使用项目中的外部库和头来进行线性规划。它包含两个部分。cpp文件。主要文件,主要农民,取决于pm。H

PM. h具有主农场主调用COIN-OR函数所需的所有包含行。这是pm. h的代码:

#include "ClpSimplex.hpp"
#include "CoinHelperFunctions.hpp"
#include "CoinTime.hpp"
#include "CoinBuild.hpp"
#include "CoinModel.hpp"

我有一个由我的老师提供的makefile,并根据自己的需要进行了修改,但每当我试图通过运行makefile来编译项目时,我都会遇到相同的错误:

在文件包含从main-farmer.cpp: 5:0: pm. h: 14:26:致命错误: ClpSimplex.hpp:没有这样的文件或目录编译终止。

这是生成文件:

#
P=farmer
#

EXE=$(P)
OBJS=main-farmer.o model-farmer.o param-farmer.o pm.h

ADDLIBS=-D.
ADDINCFLAGS=-I.

SRCDIR=~/coin-projects

########## 


CXX=g++
CXXFLAGS=-O3 -fomit-frame-pointer -pipe -DNDEBUG -pedantic-errors -Wimplicit -Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith -Wwrite-strings -Wconversion
CXXLINKFLAGS=-Wl,--rpath -Wl,/installed/CoinAll/lib
CC=gcc
CFLAGS=-03 -fomit-frame-pointer -pipe -DNDEBUG -pedantic-errors -Wimplicit -Wparentheses -Wsequence-point -Wreturn-type -Wcast-qual -Wall


COININCDIR=/installed/CoinAll/include/coin

#  COIN-OR libs
COINLIBDIR=/installed/CoinAll/lib

#  Clp
LIBS=-L$(COINLIBDIR) -lCbc -lCgl -lOsiClp -lOsi -lClp -lCoinUtils -lm \
`cat $(COINLIBDIR)/cgl_addlibs.txt` \
`cat $(COINLIBDIR)/clp_addlibs.txt` \
`cat $(COINLIBDIR)/coinutils_addlibs.txt` 



CLEANFILES=\
addBits.o addBits \
addColumns.o addColumns \
addRows.o addRows \
decompose.o decompose \
defaults.o defaults \
driver2.o driver2 \
driver.o driver \
driverC.o driverC \
dualCuts.o dualCuts \
ekk.o ekk \
ekk_interface.o ekk_interface \
hello.o hello \
makeDual.o makeDual \
minimum.o minimum \
network.o network \
piece.o piece \
rowColumn.o rowColumn \
sprint2.o sprint2 \
sprint.o sprint \
testBarrier.o testBarrier \
testBasis.o testBasis \
testGub2.o testGub2 \
testGub.o testGub \
testQP.o testQP \
useVolume.o useVolume

# Part 3
#

all: $(EXE)

.SUFFIXES: .cpp .c .o .obj

$(EXE): $(OBJS)
    bla=;
    for file in $(OBJS); do bla="$$bla `$(CYGPATH_W) $$file`"; done; \
    $(CXX) $(CXXLINKFLAGS) $(CXXFLAGS) -o $@ $$bla $(ADDLIBS) $(LIBS)

####
########
############
########
####


clean:
    rm -rf $(CLEANFILES)
.cpp.o:
    $(CXX) $(CXXFLAGS) $(INCL) -c -o $@ `test -f '$<' || echo '$(SRCDIR)/'`$<
.cpp.obj:
    $(CXX) $(CXXFLAGS) $(INCL) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(SRCDIR)/$<'; fi`
.c.o:
    $(CC) $(CFLAGS) $(INCL) -c -o $@ `test -f '$<' || echo '$(SRCDIR)/'`$<
.c.obj:
    $(CC) $(CFLAGS) $(INCL) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(SRCDIR)/$<'; fi`

注意:ClpSimplex.hpp位于指定为COININCDIR的目录中。

共有1个答案

司寇凯
2023-03-14

您的Makefile定义了coincdir,它可能指向您的数据库的父目录。hpp标题。编译器需要找到这些变量,由于没有使用变量,因此解释了为什么找不到这些变量。如果将-I$(COININCDIR)添加到cxflags,编译器将能够找到它们。

 类似资料:
  • 问题内容: 强制通过window.location下载时,如何在JavaScript中设置Blob文件的名称? 运行上面的代码即可立即下载文件,而无需刷新页面,如下所示: bfefe410-8d9c-4883-86c5-d76c50a24a1d 我想将文件名设置为 my-download.json 。 问题答案: 我知道的唯一方法是FileSaver.js使用的技巧: 创建一个隐藏标签。 将其属性

  • 如何在typescript中设置blob的文件名?对于IE,我可以轻松设置文件名,但对于Chrome来说,这似乎是不可能的。基本上,我需要类似于此解决方案的东西,但需要typescript 此函数从html UI/angular 2调用:

  • 什么是 makefile?或许很多 Winodws 的程序员都不知道这个东西,因为那些 Windows 的 IDE 都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写make

  • 问题内容: 我们是否有理由在链接属性中包含/ 协议? 最好不做任何处理: 问题答案: 包含“ http:”或“ https:”部分只是一个传统问题,一部分是实际指定协议的问题。如果默认,则使用当前页面的协议。例如,///根据引用页面的URL变为http://www.example.com或https://www.example.com。如果网页保存在本地磁盘上然后从那里打开,则该网页没有协议(只是

  • 正如您在本教程中看到的那样,http://www.vogella.com/tutorials/JavaPersistenceAPI/article.html 当您声明像 Person 这样的实体时,您必须将其添加到持久性中.xml喜欢

  • 问题内容: 大家好,我需要在linux中执行此操作: 给出:文件名“ foo.txt” 查找:所有符号链接到“ foo.txt”的文件 怎么做?谢谢! 问题答案: 这取决于是否要查找指向特定文件的链接,那么这是唯一的好方法: 另一方面,如果您只是想查找指向恰好名为的 任何 文件的链接,则类似 要么