Thanks for pointing this.
I am not sure, but I could remember the current way is to compile to object 
files and then linking together to a feature-test binary.

Besides, I think the current compile time is like 80% of linking + 20% of 
compiling objects.

Best
xunzhang
Send from my iPhone

> 在 2016年7月8日,10:23,Paul Guo <[email protected]> 写道:
> 
> I'm adding some feature tests into hawq code, however I found currently the 
> makefile code compiles all of the test cpp files each time, regardless of 
> single file change or no file change. This is too time-consuming given in the 
> future there will be more and more cases. See more below.
> 
> g++ -I/usr/include -I/usr/local/include -I/usr/include/libxml2 
> -I/data2/github/incubator-hawq/src/test/feature/ 
> -I/data2/github/incubator-hawq/src/test/feature/lib/ 
> -I/data2/github/incubator-hawq/src/interfaces/libpq 
> -I/data2/github/incubator-hawq/src/interfaces 
> -I/data2/github/incubator-hawq/src/include  
> -I/data2/github/incubator-hawq/depends/thirdparty/googletest/googletest/include
>  
> -I/data2/github/incubator-hawq/depends/thirdparty/googletest/googlemock/include
>  -Wall -O0 -g -std=c++11 test_main.cpp ExternalSource/test_errortbl.cpp 
> ExternalSource/test_exttab.cpp ManagementTool/test_hawq_register.cpp 
> PreparedStatement/TestPreparedStatement.cpp UDF/TestUDF.cpp 
> ao/TestAoSnappy.cpp catalog/test_alter_owner.cpp catalog/test_alter_table.cpp 
> lib/command.cpp lib/data_gen.cpp lib/file_replace.cpp lib/hawq_config.cpp 
> lib/psql.cpp lib/sql_util.cpp lib/string_util.cpp lib/xml_parser.cpp 
> parquet/test_parquet.cpp partition/test_partition.cpp 
> query/test_aggregate.cpp query/test_insert.cpp query/test_prepare.cpp 
> query/test_sequence.cpp testlib/test_lib.cpp type/TestType.cpp 
> -L../../../src/port -L../../../src/port -Wl,--as-needed 
> -L/data2/github/incubator-hawq/depends/libhdfs3/build/install/data2/github/hawq-install/lib
>  
> -L/data2/github/incubator-hawq/depends/libyarn/build/install/data2/github/hawq-install/lib
>  -Wl,-rpath,'/data2/github/hawq-install/lib',--enable-new-dtags 
> -L/usr/local/lib -L/usr/lib -L/data2/github/incubator-hawq/src/test/feature/ 
> -L/data2/github/incubator-hawq/src/test/feature/lib/ 
> -L/data2/github/incubator-hawq/src/interfaces/libpq 
> -L/data2/github/incubator-hawq/depends/thirdparty/googletest/build/googlemock 
> -L/data2/github/incubator-hawq/depends/thirdparty/googletest/build/googlemock/gtest
>  -lpgport -ljson-c -levent -lyaml -lsnappy -lbz2 -lrt -lssl -lcrypto -lz 
> -lreadline -lcrypt -ldl -lm  -L/usr/local/lib -lcurl -lyarn -lkrb5 -lgtest 
> -lpq -lxml2 -ltest -o feature-test
> 
> 
> PROG = test_main.cpp $(wildcard */*.cpp)
> RM = rm -rf
> 
> .PHONY: all sharelib sharelibclean distclean clean doc
> 
> all: sharelib
>     $(MAKE) -C lib all
>     $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(PROG) $(LDFLAGS) $(LIBS) -o feature-test
> 
> Above is related code in Makefile. since share lib is a .PHONY target without 
> dependency, so
> above code will always be executed.
> 
> So we could compile each test_$case.cpp into one .o and link link them into 
> one.
> The will make compile faster, besides, take the feature test cases under ao/ 
> for example,
> we could make the relative path starts with $test_root/ao for the ao/ cases. 
> This
> make more sense.
> 
> TEST_F(TestAOSnappy, Create1048576)
> {
>     hawq::test::SQLUtility util;
>     util.execSQLFile("ao/sql/ao_crtb_with_row_snappy_1048576.sql",
>                      "ao/ans/ao_crtb_with_row_snappy_1048576.ans",
>                      initFile);
> }
> 
> Any idea?

Reply via email to