@@ -10,24 +10,28 @@ HTMLDIR=$(abspath ./cov/)
1010BROWSER =firefox
1111
1212CC =g++
13+ CONAN_CC =gcc
1314CXXARGS =-I$(abspath ./inc) -g -c -std=c++20 -MMD -fprofile-arcs -ftest-coverage
1415LDARGS =-fprofile-arcs -ftest-coverage
1516
1617all :
1718 @echo " Please choose a target:"
18- @echo " -> make install: installs the headers under $( INSTALL_DIR) "
19- @echo " -> make uninstall: uninstalls the headers if they are under $( INSTALL_DIR) "
20- @echo " -> make docs: generates the documentation using doxygen under $( DOC_DIR) "
21- @echo " -> make test: builds and runs the tests in $( BUILD_DIR) and $( BIN_DIR) from $( TEST_DIR) "
22- @echo " -> make clean: cleans up test builds and documentation (from $( BUILD_DIR) , $( BIN_DIR) , $( DOC_DIR) )"
23- @echo " -> make coverage: builds and runs the tests, then generates a coverage report in $( HTMLDIR) and opens it in $( BROWSER) "
19+ @echo " -> make install: installs the headers under $( INSTALL_DIR) "
20+ @echo " -> make uninstall: uninstalls the headers if they are under $( INSTALL_DIR) "
21+ @echo " -> make docs: generates the documentation using doxygen under $( DOC_DIR) "
22+ @echo " -> make test: builds and runs the tests in $( BUILD_DIR) and $( BIN_DIR) from $( TEST_DIR) "
23+ @echo " -> make test-clang: builds and runs the tests in $( BUILD_DIR) and $( BIN_DIR) from $( TEST_DIR) (using clang++)"
24+ @echo " -> make clean: cleans up test builds and documentation (from $( BUILD_DIR) , $( BIN_DIR) , $( DOC_DIR) )"
25+ @echo " -> make coverage: builds and runs the tests, then generates a coverage report in $( HTMLDIR) and opens it in $( BROWSER) "
2426 @echo " "
2527 @echo " Some targets accept additional arguments in the form of KEY=VALUE pairs:"
2628 @echo " -> CC (for test and coverage): sets the command for the C++ compiler (g++ by default)"
29+ @echo " -> CONAN_CC (for test and coverage): sets the conan compiler name (gcc by default)"
2730 @echo " -> CXXARGS (for test and coverage): current arguments to the compiler - not recommended to change"
2831 @echo " -> EXTRA_CXX (for test and coverage): additional compilation flags/arguments"
2932 @echo " -> LDARGS (for test and coverage): current arguments to the linker - not recommended to change"
3033 @echo " -> EXTRA_LD (for test and coverage): additional linker flags/arguments"
34+ @echo " -> EXTRA_CONAN (for test and coverage): additional arguments for conan"
3135 @echo " -> BUILD_DIR (for test and coverage): build directory"
3236 @echo " -> BIN_DIR (for test and coverage): binary directory"
3337 @echo " -> TEST_DIR (for test and coverage): test sources directory"
@@ -55,14 +59,17 @@ docs:
5559 $(BROWSER ) $(DOC_DIR ) /html/index.html
5660
5761test :
58- make CC=" $( CC) " OBJD=" $( BUILD_DIR) " BIND=" $( BIN_DIR) " SRCD=" $( TEST_DIR) " CXXARGS=" $( CXXARGS) $( EXTRA_CXX) -I$( INCL_PATH) " LDARGS=" $( LDARGS) $( EXTRA_LD) " -C $(TEST_DIR ) /..
62+ make CC=" $( CC) " CONAN_CC=" $( CONAN_CC) " CONARGS=" $( EXTRA_CONAN) " OBJD=" $( BUILD_DIR) " BIND=" $( BIN_DIR) " SRCD=" $( TEST_DIR) " CXXARGS=" $( CXXARGS) $( EXTRA_CXX) -I$( INCL_PATH) " LDARGS=" $( LDARGS) $( EXTRA_LD) " -C $(TEST_DIR ) /..
63+
64+ test-clang :
65+ make CC=" clang++" CONAN_CC=" clang" CONARGS=" $( EXTRA_CONAN) -s compiler.libcxx=libc++" OBJD=" $( BUILD_DIR) " BIND=" $( BIN_DIR) " SRCD=" $( TEST_DIR) " CXXARGS=" $( CXXARGS) $( EXTRA_CXX) -I$( INCL_PATH) -stdlib=libc++" LDARGS=" $( LDARGS) $( EXTRA_LD) -stdlib=libc++" -C $(TEST_DIR ) /..
5966
6067clean :
6168 rm -rf $(DOC_DIR ) /*
6269 cd $(TEST_DIR ) /.. && make clean OBJD=" $( BUILD_DIR) " BIND=" $( BIN_DIR) " SRCD=" $( TEST_DIR) "
6370
6471coverage :
65- make CC=" $( CC) " OBJD=" $( BUILD_DIR) " BIND=" $( BIN_DIR) " SRCD=" $( TEST_DIR) " CXXARGS=" $( CXXARGS) $( EXTRA_CXX) -I$( INCL_PATH) " LDARGS=" $( LDARGS) $( EXTRA_LD) " -C $(TEST_DIR ) /..
72+ make CC=" $( CC) " CONAN_CC= " $( CONAN_CC ) " OBJD=" $( BUILD_DIR) " BIND=" $( BIN_DIR) " SRCD=" $( TEST_DIR) " CXXARGS=" $( CXXARGS) $( EXTRA_CXX) -I$( INCL_PATH) " LDARGS=" $( LDARGS) $( EXTRA_LD) " -C $(TEST_DIR ) /..
6673 lcov --directory " $( BUILD_DIR) " --output-file coverage.info -c --exclude ' *gmock' --exclude ' *doctest*' --exclude ' /usr/*'
6774 genhtml coverage.info --output-directory " $( HTMLDIR) "
6875 $(BROWSER ) $(HTMLDIR ) /index.html
0 commit comments