【发布时间】:2020-08-10 14:45:18
【问题描述】:
我正在尝试为我的 C++ 项目创建 Makefile。
我的main.cpp 包含此自定义包括:
#include <mysql_connection.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
对于我使用的编译:
g++ -stdlib=libc++ -o app.cgi -I/usr/local/include -I/usr/local/mysql-connector-c++-8.0.21/include/jdbc -L/usr/local/mysql-connector-c++/lib64 main.cpp -lmysqlcppconn
现在我需要添加
#include "tinyxml2/tinyxml2.hpp"
最简单的方法是创建Makefile。我写道:
CC = g++
CFLAGS = -Wall -g -std=c++11
INCLUDES = -I/usr/local/include -I/usr/local/mysql-connector-c++-8.0.21/include/jdbc
LDLIBS = -L/usr/local/mysql-connector-c++/lib64 -lmysqlcppconn
SRCS = main.cpp ./tinyxml2/tinyxml2.cpp
OBJS = $(SRCS:.cpp=.o)
MAIN = main.cgi
#
# The following part of the makefile is generic
#
.PHONY: depend clean
all: $(MAIN)
$(MAIN): $(OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $(MAIN) $(OBJS)
.PRECIOUS: %.o
.c.o:
$(CC) $(CFLAGS) $(INCLUDES) -cpp $< -o $@
clean:
$(RM) *.o *~ $(MAIN)
depend: $(SRCS)
makedepend $(INCLUDES) $^
我收到错误:
main.cpp:21:10: fatal error: 'mysql_connection.h' file not found
#include <mysql_connection.h>
如何为每个.o 添加包含? tinyxml2 不使用 MySQL 连接器,所以我不应该添加 -lmysqlcppconn。怎么做?
【问题讨论】:
-
为什么要将jdbc添加到mysql连接器?
-
cppconn 文件隐藏在那里。
-
我无法在
$(CC) $(CFLAGS) $(INCLUDES) -cpp $< -o $@中找到有关参数-cpp的信息。这是什么意思? "$<是一个宏,引用了第一个依赖" en.wikipedia.org/wiki/Makefile 但是.c.o:没有任何依赖。 -
你为什么在
g++ -stdlib=libc++ -o app.cgi -I/usr/local/include -I/usr/local/mysql-connector-c++-8.0.21/include/jdbc -L/usr/local/mysql-connector-c++/lib64 main.cpp -lmysqlcppconn中使用-stdlib=libc++? -
makefile 中没有任何内容告诉它在编译 cpp 文件时使用
$(INCLUDES)。所以,它没有。