Lia*_*dri 4 c++ makefile include
好吧,经过3个小时的研究,我即将疯狂,所以我觉得是时候将它传递给一些新的眼睛了.
CXXFLAGS = -g -Wall
OBJS = main.o
PROG = test
INCLUDES = -I /usr/include/mysql -I /usr/local/include
LIBS = -L /usr/lib/mysql -l libmysqlclient.so.15.0.0 -L /usr/local/lib -l libmysqlpp.so.3.1.0
all: $(PROG)
${PROG}: $(OBJS)
$(CXX) $(INCLUDES) -o $(PROG) $(OBJS) $(LIBS)
clean:; $(RM) -f $(PROG) core *.o
Run Code Online (Sandbox Code Playgroud)
包含路径有问题,因为我在/ usr/include/mysql中明显存在时会遇到mysql_version.h不存在的错误.
它说,检查输出的第一部分
g++ -g -Wall -c -o main.o main.cpp
Run Code Online (Sandbox Code Playgroud)
这让我觉得我在Makefile中格式化了一些错误的东西(由于额外的空格和缺少include/library路径).但是,我查看了很多关于Makefile和g ++选项的手册和文章......没有进展.
我认为这应该是一个简单的修复.请帮忙(你感觉到我的绝望吗?).
另外,你认为有必要特别指定库吗?我在XCode中运行这些东西很好,但我正在尝试将代码迁移到我的Web服务器...... Makefile已经停止了所有进度,我认为这是我应该学习的东西.
MJD*_*MJD 11
在makefile中,您已将include指令添加到链接阶段,而不是编译阶段.
线条
${PROG}: $(OBJS)
$(CXX) $(INCLUDES) -o $(PROG) $(OBJS) $(LIBS)
Run Code Online (Sandbox Code Playgroud)
假设通过调用$ {CXX}中的编译器传递include文件夹(以及其他参数),从$ {OBJS}中的目标文件中创建$ {PROG}程序.相反,对于您的变量部分,请执行以下操作:
INCLUDES = -I /usr/include/mysql -I /usr/local/include
CXXFLAGS = -g -Wall ${INCLUDES}
OBJS = main.o
PROG = test
LIBS = -L /usr/lib/mysql -l libmysqlclient.so.15.0.0 -L /usr/local/lib -l libmysqlpp.so.3.1.0
Run Code Online (Sandbox Code Playgroud)
这样,您的CXXFLAGS(用于编译阶段)现在应该拾取您的include指令.
| 归档时间: |
|
| 查看次数: |
16306 次 |
| 最近记录: |