@@ -10,24 +10,28 @@ HTMLDIR=$(abspath ./cov/)
10
10
BROWSER =firefox
11
11
12
12
CC =g++
13
+ CONAN_CC =gcc
13
14
CXXARGS =-I$(abspath ./inc) -g -c -std=c++20 -MMD -fprofile-arcs -ftest-coverage
14
15
LDARGS =-fprofile-arcs -ftest-coverage
15
16
16
17
all :
17
18
@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) "
24
26
@echo " "
25
27
@echo " Some targets accept additional arguments in the form of KEY=VALUE pairs:"
26
28
@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)"
27
30
@echo " -> CXXARGS (for test and coverage): current arguments to the compiler - not recommended to change"
28
31
@echo " -> EXTRA_CXX (for test and coverage): additional compilation flags/arguments"
29
32
@echo " -> LDARGS (for test and coverage): current arguments to the linker - not recommended to change"
30
33
@echo " -> EXTRA_LD (for test and coverage): additional linker flags/arguments"
34
+ @echo " -> EXTRA_CONAN (for test and coverage): additional arguments for conan"
31
35
@echo " -> BUILD_DIR (for test and coverage): build directory"
32
36
@echo " -> BIN_DIR (for test and coverage): binary directory"
33
37
@echo " -> TEST_DIR (for test and coverage): test sources directory"
@@ -55,14 +59,17 @@ docs:
55
59
$(BROWSER ) $(DOC_DIR ) /html/index.html
56
60
57
61
test :
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 ) /..
59
66
60
67
clean :
61
68
rm -rf $(DOC_DIR ) /*
62
69
cd $(TEST_DIR ) /.. && make clean OBJD=" $( BUILD_DIR) " BIND=" $( BIN_DIR) " SRCD=" $( TEST_DIR) "
63
70
64
71
coverage :
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 ) /..
66
73
lcov --directory " $( BUILD_DIR) " --output-file coverage.info -c --exclude ' *gmock' --exclude ' *doctest*' --exclude ' /usr/*'
67
74
genhtml coverage.info --output-directory " $( HTMLDIR) "
68
75
$(BROWSER ) $(HTMLDIR ) /index.html
0 commit comments