0

我希望能够在不使用 makefile 的情况下编译 c++ 源文件。这是我的问题的原型......我有以下.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;
}

在同一个目录中,我有以下makefile,可以让我.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

现在,出于我的目的,我想从.cpp文件目录中删除这个 makefile。同时,我希望能够编译.cpp文件...

知道 makefile 引用的目标文件和库将位于它们各自的目录中......

所以,我想做的就是在.cpp没有makefile的情况下编译文件。

是否可以为给定的情况做这样的事情?...如果是,您的建议非常感谢!

4

1 回答 1

2

假设您的 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
于 2013-02-14T22:34:25.533 回答