Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gtest not building properly when a second main is present in the project [BUG] #27

Open
riera90 opened this issue Feb 16, 2019 · 1 comment
Labels

Comments

@riera90
Copy link
Owner

riera90 commented Feb 16, 2019

Description
When compiling and executing a gtest, and a second main is added in the / path of the project, this main is build under the name of the gtest and executed

Configuration

# DIRECTORIES
# src directory
SRC_DIR         :=./src
GTEST_DIR       :=./gtests
OUTPUT_DIR      :=./output
# aditional project libs directory
EXTRA_LIB_DIR   :=
# temporal files directory
TMP_DIR         :=./tmp
SRC_CODE_EXT    :=cpp
SRC_HEADERS_EXT :=hpp
MAIN_FILE       :=main.cpp
# excluded files from the project
EXCLUDED_FILES  :=


# binary file name
BIN_NAME:=bin.out
# binary arguments (if executed by the makefile).
BIN_ARGUMENTS:=
# compiler
CXX:=g++
# compilation flags
CXXFLAGS:=-Wpedantic -DNDEBUG

# [YES/NO]
EXECUTE_AFTER_COMPILATION:=YES
ALLOW_FOR_GNU_DEBUGGER:=YES

Tree output

.
├── Doxyfile
├── gtests
│   └── MonomioUnittest.cpp
├── Makefile
├── make-files
│   ├── banner.txt
│   ├── config.sh
│   ├── CONTRIBUTING.md
│   ├── fancy_banner_short.txt
│   ├── fancy_banner.txt
│   ├── gmf.gif
│   ├── help.txt
│   ├── LICENSE.md
│   ├── logo.png
│   ├── Makefile
│   └── README.md
├── output
│   └── MonomioUnittest.out
├── Practica-1.pdf
├── src
│   ├── Auxiliar
│   │   ├── AuxiliarFunctions
│   │   │   ├── funcionesAuxiliares.cpp
│   │   │   └── funcionesAuxiliares.hpp
│   │   └── macros.hpp
│   ├── Controller
│   │   └── Monomio
│   │       ├── auxiliarFunctions.cpp
│   │       ├── auxiliarFunctions.hpp
│   │       ├── operadoresExternosMonomios.cpp
│   │       └── operadoresExternosMonomios.hpp
│   ├── Entity
│   │   └── Monomio
│   │       ├── Monomio.cpp
│   │       └── Monomio.hpp
│   ├── main.cpp
│   └── testfile.cpp
└── tmp
    ├── Auxiliar
    │   └── AuxiliarFunctions
    │       └── funcionesAuxiliares.o
    ├── Controller
    │   └── Monomio
    │       ├── auxiliarFunctions.o
    │       └── operadoresExternosMonomios.o
    ├── Entity
    │   └── Monomio
    │       └── Monomio.o
    ├── gtest-all.o
    ├── gtest_main.o
    ├── libgtest.a
    ├── libproject.a
    └── testfile.o

Log


$ make clean
	Removing temporal files
	Removing binary files

$ make config
./make-files/config.sh

$ make googletest 
                     ___
                   /'___\
   __     ___ ___ /\ \__/
 /'_ `\ /' __` __`\ \ ,__\
/\ \L\ \/\ \/\ \/\ \ \ \_/
\ \____ \ \_\ \_\ \_\ \_\
 \/___L\ \/_/\/_/\/_/\/_/ 3.0
  /\____/
  \_/__/
	Precompiling googletest object for ./make-files/googletest/googletest/src/gtest_main.cc.
	Precompiling googletest object for ./make-files/googletest/googletest/src/gtest-all.cc
	Compiling googletest library.
	Precompiling object for ./src/Entity/Monomio/Monomio.cpp.
	Precompiling object for ./src/Auxiliar/AuxiliarFunctions/funcionesAuxiliares.cpp.
	Precompiling object for ./src/Controller/Monomio/operadoresExternosMonomios.cpp.
	Precompiling object for ./src/Controller/Monomio/auxiliarFunctions.cpp.
	Precompiling object for ./src/testfile.cpp.
	Building project library.
	Building googletest ./gtests/MonomioUnittest.cpp.

	Running ./output/MonomioUnittest.out
./output/MonomioUnittest.out
this is beeing executed when googletest should be
make: *** [make-files/Makefile:63: googletest] Error 1

Additional context
the name of the second main is not important, in this case is testfile.cpp

@riera90 riera90 added the bug label Feb 16, 2019
@riera90 riera90 changed the title short description [BUG] gtest not building properly when a second main is present in the project [BUG] Feb 16, 2019
@riera90
Copy link
Owner Author

riera90 commented Feb 16, 2019

here's the full configuration

# this Makefile was generated automaticly by generic-makefile

.PHONY : target
target : banner run
	
	
.PHONY : run
run : ./output/bin.out
	@echo "\tExecuting binary.\n"
	@time "./output/bin.out" 
	
	
./output/bin.out : ./src/main.cpp  ./tmp/libproject.a
	@echo "\tCompiling binary."
	@mkdir -p ./output
	@g++ ./src/main.cpp -Wpedantic -DNDEBUG -g -I ./src -I ./src/Entity -I ./src/Entity/Monomio -I ./src/Auxiliar -I ./src/Auxiliar/AuxiliarFunctions -I ./src/Controller -I ./src/Controller/Monomio  -o ./output/bin.out ./tmp/libproject.a 


./tmp/libproject.a : ./tmp/Entity/Monomio/Monomio.o ./tmp/Auxiliar/AuxiliarFunctions/funcionesAuxiliares.o ./tmp/Controller/Monomio/operadoresExternosMonomios.o ./tmp/Controller/Monomio/auxiliarFunctions.o ./tmp/testfile.o 
	@echo "\tBuilding project library."
	@ar -rsc ./tmp/libproject.a ./tmp/Entity/Monomio/Monomio.o ./tmp/Auxiliar/AuxiliarFunctions/funcionesAuxiliares.o ./tmp/Controller/Monomio/operadoresExternosMonomios.o ./tmp/Controller/Monomio/auxiliarFunctions.o ./tmp/testfile.o 


./tmp/Entity/Monomio/Monomio.o : ./src/Entity/Monomio/Monomio.cpp ./src/Entity/Monomio/Monomio.hpp
	@echo "\tPrecompiling object for ./src/Entity/Monomio/Monomio.cpp."
	@mkdir -p ./tmp/Entity/Monomio
	@g++ -c ./src/Entity/Monomio/Monomio.cpp -I ./src -I ./src/Entity -I ./src/Entity/Monomio -I ./src/Auxiliar -I ./src/Auxiliar/AuxiliarFunctions -I ./src/Controller -I ./src/Controller/Monomio  -o ./tmp/Entity/Monomio/Monomio.o;


./tmp/Auxiliar/AuxiliarFunctions/funcionesAuxiliares.o : ./src/Auxiliar/AuxiliarFunctions/funcionesAuxiliares.cpp ./src/Auxiliar/AuxiliarFunctions/funcionesAuxiliares.hpp
	@echo "\tPrecompiling object for ./src/Auxiliar/AuxiliarFunctions/funcionesAuxiliares.cpp."
	@mkdir -p ./tmp/Auxiliar/AuxiliarFunctions
	@g++ -c ./src/Auxiliar/AuxiliarFunctions/funcionesAuxiliares.cpp -I ./src -I ./src/Entity -I ./src/Entity/Monomio -I ./src/Auxiliar -I ./src/Auxiliar/AuxiliarFunctions -I ./src/Controller -I ./src/Controller/Monomio  -o ./tmp/Auxiliar/AuxiliarFunctions/funcionesAuxiliares.o;


./tmp/Controller/Monomio/operadoresExternosMonomios.o : ./src/Controller/Monomio/operadoresExternosMonomios.cpp ./src/Controller/Monomio/operadoresExternosMonomios.hpp
	@echo "\tPrecompiling object for ./src/Controller/Monomio/operadoresExternosMonomios.cpp."
	@mkdir -p ./tmp/Controller/Monomio
	@g++ -c ./src/Controller/Monomio/operadoresExternosMonomios.cpp -I ./src -I ./src/Entity -I ./src/Entity/Monomio -I ./src/Auxiliar -I ./src/Auxiliar/AuxiliarFunctions -I ./src/Controller -I ./src/Controller/Monomio  -o ./tmp/Controller/Monomio/operadoresExternosMonomios.o;


./tmp/Controller/Monomio/auxiliarFunctions.o : ./src/Controller/Monomio/auxiliarFunctions.cpp ./src/Controller/Monomio/auxiliarFunctions.hpp
	@echo "\tPrecompiling object for ./src/Controller/Monomio/auxiliarFunctions.cpp."
	@mkdir -p ./tmp/Controller/Monomio
	@g++ -c ./src/Controller/Monomio/auxiliarFunctions.cpp -I ./src -I ./src/Entity -I ./src/Entity/Monomio -I ./src/Auxiliar -I ./src/Auxiliar/AuxiliarFunctions -I ./src/Controller -I ./src/Controller/Monomio  -o ./tmp/Controller/Monomio/auxiliarFunctions.o;


./tmp/testfile.o : ./src/testfile.cpp 
	@echo "\tPrecompiling object for ./src/testfile.cpp."
	@mkdir -p ./tmp
	@g++ -c ./src/testfile.cpp -I ./src -I ./src/Entity -I ./src/Entity/Monomio -I ./src/Auxiliar -I ./src/Auxiliar/AuxiliarFunctions -I ./src/Controller -I ./src/Controller/Monomio  -o ./tmp/testfile.o;


.PHONY: gdb
gdb : clean ./output/bin.out
	@echo "\tLaunching gdb.\n"
	@gdb ./output/bin.out


.PHONY : googletest
googletest : banner ./output/MonomioUnittest.out 
	@echo "\n\tRunning ./output/MonomioUnittest.out"
	./output/MonomioUnittest.out

./output/MonomioUnittest.out : ./tmp/libgtest.a ./tmp/libproject.a ./gtests/MonomioUnittest.cpp
	@mkdir -p ./output
	@echo "\tBuilding googletest ./gtests/MonomioUnittest.cpp."
	@g++ -isystem ./make-files/googletest/googletest/include -pthread -I ./src -I ./src/Entity -I ./src/Entity/Monomio -I ./src/Auxiliar -I ./src/Auxiliar/AuxiliarFunctions -I ./src/Controller -I ./src/Controller/Monomio  -Wpedantic -DNDEBUG -g ./gtests/MonomioUnittest.cpp ./tmp/libproject.a ./tmp/libgtest.a -o ./output/MonomioUnittest.out


./tmp/libgtest.a : ./tmp/gtest_main.o ./tmp/gtest-all.o
	@echo "\tCompiling googletest library."
	@ar -rc ./tmp/libgtest.a ./tmp/gtest-all.o ./tmp/gtest_main.o


./tmp/gtest_main.o : ./make-files/googletest/googletest/src/gtest_main.cc
	@echo "\tPrecompiling googletest object for ./make-files/googletest/googletest/src/gtest_main.cc."
	@mkdir -p ./tmp
	@g++ -isystem ./make-files/googletest/googletest/include -I ./make-files/googletest/googletest -pthread -c ./make-files/googletest/googletest/src/gtest_main.cc -o ./tmp/gtest_main.o

./tmp/gtest-all.o : ./make-files/googletest/googletest/src/gtest-all.cc
	@echo "\tPrecompiling googletest object for ./make-files/googletest/googletest/src/gtest-all.cc"
	@mkdir -p ./tmp
	@g++ -isystem ./make-files/googletest/googletest/include -I ./make-files/googletest/googletest -pthread -c ./make-files/googletest/googletest/src/gtest-all.cc -o ./tmp/gtest-all.o


.PHONY : banner
banner :
	@cat ./make-files/fancy_banner_short.txt


.PHONY : help
help:
	@cat ./make-files/banner.txt
	@cat ./make-files/help.txt


.PHONY : clean
clean:
	@echo "\tRemoving temporal files"
	@rm -rf ./tmp
	@echo "\tRemoving binary files"
	@rm ./output/*.out

#    __
# __( o)>
# \ <_ ) r90

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant