Я использую ctypes
Python для взаимодействия с некоторым C++
и добавил зависимость, с которой я не могу ссылаться во время компиляции. (Эта зависимость отлично связывается для любых применений, отличных от этого extern "C" {...}
кода extern "C" {...}
.)
Я включил свой C++
в файл _extern.cpp
ниже:
// cellComplex_extern.cpp
#include "../../../cell.hpp"
extern "C" {...}
Файл заголовка cell.hpp
включает в себя мою зависимость, и здесь начинается проблема. Компилятор (конечно) не может найти "interval.hpp
или hess_ari.hpp
потому что в Makefile ниже я не сделал ссылку...
//cell.hpp
#include "interval.hpp"
#include "hess_ari.hpp"
как вы видете:
# Makefile
export CXSCINCDIR = ${HOME}/local/cxsc/include
export CXSCLIBDIR = ${HOME}/local/cxsc/lib
CXXINC = -I$(CXSCINCDIR)
LIBPATHS = -L$(CXSCLIBDIR)
CXXFLAGS = $(CXXINC)
cellComplex_extern:
g++ -c -fPIC cellComplex_extern.cpp -o cellComplex_extern.o
g++ -shared -Wl -o cellComplex_lib.so cellComplex_extern.o
Почему я не сделал ссылку? Потому что единственный способ, которым я знаю, как сделать что-то вроде
g++ -I$(CXSCINCDIR) cellComplex_extern.cpp -o cellComplex_extern.o -L$(CXSCLIBPATHS) -lcxsc
Что не будет работать здесь, так как у меня нет main
функции в cellComplex_extern.cpp
.
Какие-нибудь советы?
EDIT: Хорошо, ответ ниже, и вот мой новый make файл, который отлично работает:
export CXSCINCDIR = ${HOME}/local/cxsc/include
export CXSCLIBDIR = ${HOME}/local/cxsc/lib
export CXX = g++
CXXINC = -I$(CXSCINCDIR) #-I$(GSLINCDIR)
LIBPATHS = -L$(CXSCLIBDIR) #-L$(GSLLIBDIR)
CXXFLAGS = $(CXXINC) #$(CXXOPTS)
cellComplex_extern:
g++ $(CXXINC) -c -fPIC cellComplex_extern.cpp -o cellComplex_extern.o
g++ $(CXXFLAGS) -shared -Wl -o cellComplex_lib.so cellComplex_extern.o $(LIBPATHS) -lcxsc
Я не уверен, что правильно понимаю вашу проблему, но вы не можете указать путь include к компилятору, как в
g++ -I$(CXSCINCDIR) -c -fPIC cellComplex_extern.cpp -o cellComplex_extern.o
?