开发者

how can I compile header and its run file without main

开发者 https://www.devze.com 2023-02-14 20:07 出处:网络
I have two files without main X.h X.cpp I want compile these in one makefile My makefile is ; CXX = g++ CXXFLAGS_W = -Werror -Wunused-variable -Wunused-value -Wunused-function \\

I have two files without main

  • X.h
  • X.cpp

I want compile these in one makefile

My makefile is ;

CXX = g++
CXXFLAGS_W = -Werror -Wunused-variable -Wunused-value -Wunused-function \
         -Wfloat-equal -Wall
CXXFLAGS_M = -ansi  -pedantic-errors
CXXFLAGS   = ${CXXFLAGS_M} ${CXFLAGS_W}

all:    main
       ./main

When I use like make X , compiler gives some error "undefined reference to main ". Due to that rea开发者_Python百科son, I want new makefile. X can be any name .


You would generally have something like:

X.o: X.cpp X.h
    g++ -c -o X.o X.cpp  # or $(CXX) $(CXXFLAGS) -c -o ...

with whatever other flags you needed. -c tells the compiler to just compile rather than compile and link, and you don't usually compile the header file directly, rather you #include it in the cpp file.


Here's a makefile which combines two separate source files into a single executable:

xy: x.o y.o
    g++ -o xy x.o y.o

x.o: x.cpp x.hpp y.hpp
    g++ -c -o x.o x.cpp

y.o: y.cpp y.hpp
    g++ -c -o y.o y.cpp

The x.cpp file includes x.hpp and y.hpp while y.cpp only includes y.hpp. The final executable is xy.

The first rule builds the executable from the two object files. The second and third rules builds the two object files, which is what I think you're asking for in the question.

0

精彩评论

暂无评论...
验证码 换一张
取 消