Как связать объектные файлы и библиотеки без использования make-файла

Я хотел бы иметь возможность скомпилировать исходный файл C ++ без использования make-файла. И вот прототип моей проблемы … У меня есть следующее .cpp файл

// special libraries to include
#include "acado.h"#include "auxiliary_functions.c"/* -------------------------- */
// Create objects for special classes
ACADOvariables acadoVariables;
ACADOworkspace acadoWorkspace;

int main(){
// perform task A_1
// perform task A_2
// Tasks A_1 and A_2 depend on the specially included headers
return 0;
}

и в том же каталоге у меня есть следующий make-файл, который позволяет мне скомпилировать .cpp файл успешно

LDLIBS = -lm
CXXFLAGS = -O3 -finline-functions -I. -I./qpoases/INCLUDE -I./qpoases/SRC
CFLAGS = -O3
CC     = g++

OBJECTS = \
./qpoases/SRC/QProblemB.o       \
./qpoases/SRC/Bounds.o          \
./qpoases/SRC/Constraints.o     \
./qpoases/SRC/SubjectTo.o       \
./qpoases/SRC/Indexlist.o       \
./qpoases/SRC/CyclingManager.o  \
./qpoases/SRC/Utils.o           \
./qpoases/SRC/MessageHandling.o \
./qpoases/solver.o              \
integrator.o                    \
condensing.o                    \
gauss_newton_method.o

.PHONY: all
all: test libacado_exported_rti.a

test: ${OBJECTS} test.o

./qpoases/solver.o    : ./qpoases/solver.hpp
integrator.o          : acado.h
condensing.o          : acado.h
gauss_newton_method.o : acado.h   ./qpoases/solver.hpp
test.o                : acado.h   ./qpoases/solver.hpp

libacado_exported_rti.a: ${OBJECTS}
ar r $@ $?

${OBJECTS} : ./qpoases/solver.hpp

.PHONY : clean
clean :
-rm -f *.o *.a ./qpoases/SRC/*.o ./qpoases/SRC/*.a test

Теперь я хочу удалить этот make-файл из .cpp каталог файлов. В то же время я хотел бы иметь возможность .cpp файл …

Зная, что объектные файлы и библиотеки, на которые ссылается make-файл, будут находиться в соответствующих каталогах ….

Итак, все, что я хотел бы сделать, это собрать .cpp файл без make-файла.

Можно ли сделать что-то подобное для данного случая? … Если да, ваши предложения действительно ценятся!

0

Решение

Предполагая, что ваша функция main () находится в test.cpp, и вам нужен исполняемый файл с именем «test», вы можете вызывать компилятор непосредственно из каталога, в который вы вызываете make:

 g++ test.cpp -O3 -finline-functions -I. -I./qpoases/INCLUDE -I./qpoases/SRC -lm -o test ./qpoases/SRC/QProblemB.o ./qpoases/SRC/Bounds.o ./qpoases/SRC/Constraints.o ./qpoases/SRC/SubjectTo.o ./qpoases/SRC/Indexlist.o ./qpoases/SRC/CyclingManager.o ./qpoases/SRC/Utils.o ./qpoases/SRC/MessageHandling.o ./qpoases/solver.o integrator.o condensing.o gauss_newton_method.o
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]