@@ -5,6 +5,7 @@ package("gtest")
5
5
6
6
add_urls (" https://github.com/google/googletest/archive/refs/tags/$(version).zip" , {alias = " archive" })
7
7
add_urls (" https://github.com/google/googletest.git" , {alias = " github" })
8
+
8
9
add_versions (" github:v1.8.1" , " release-1.8.1" )
9
10
add_versions (" archive:v1.8.1" , " 927827c183d01734cc5cfef85e0ff3f5a92ffe6188e0d18e909c5efebf28a0c7" )
10
11
add_versions (" github:v1.10.0" , " release-1.10.0" )
@@ -15,10 +16,12 @@ package("gtest")
15
16
add_versions (" archive:v1.12.0" , " ce7366fe57eb49928311189cb0e40e0a8bf3d3682fca89af30d884c25e983786" )
16
17
add_versions (" github:v1.12.1" , " release-1.12.1" )
17
18
add_versions (" archive:v1.12.1" , " 24564e3b712d3eb30ac9a85d92f7d720f60cc0173730ac166f27dda7fed76cb2" )
19
+
18
20
add_versions (" v1.13.0" , " ffa17fbc5953900994e2deec164bb8949879ea09b411e07f215bfbb1f87f4632" )
19
21
add_versions (" v1.14.0" , " 1f357c27ca988c3f7c6b4bf68a9395005ac6761f034046e9dde0896e3aba00e4" )
20
22
add_versions (" v1.15.2" , " f179ec217f9b3b3f3c6e8b02d3e7eda997b49e4ce26d6b235c9053bec9c0bf9f" )
21
23
add_versions (" v1.16.0" , " a9607c9215866bd425a725610c5e0f739eeb50887a57903df48891446ce6fb3c" )
24
+ add_versions (" v1.17.0" , " 40d4ec942217dcc84a9ebe2a68584ada7d4a33a8ee958755763278ea1c5e18ff" )
22
25
23
26
add_configs (" main" , {description = " Link to the gtest_main entry point." , default = false , type = " boolean" })
24
27
add_configs (" gmock" , {description = " Link to the googlemock library." , default = true , type = " boolean" })
@@ -27,35 +30,54 @@ package("gtest")
27
30
add_syslinks (" pthread" )
28
31
end
29
32
33
+ on_load (function (package )
34
+ if package :config (" shared" ) and package :is_plat (" windows" ) then
35
+ package :add (" defines" , " GTEST_LINKED_AS_SHARED_LIBRARY=1" )
36
+ end
37
+ end )
38
+
30
39
on_install (function (package )
31
- io .writefile (" xmake.lua" , [[
40
+ local std = " cxx14"
41
+ if package :version () and package :version ():gt (" 1.16.0" ) then
42
+ std = " cxx17"
43
+ end
44
+ io .writefile (" xmake.lua" , format ([[
45
+ set_languages("%s")
32
46
target("gtest")
33
- set_kind("static")
34
- set_languages("cxx14")
47
+ set_kind("$(kind)")
35
48
add_files("googletest/src/gtest-all.cc")
36
49
add_includedirs("googletest/include", "googletest")
37
50
add_headerfiles("googletest/include/(**.h)")
51
+ if is_kind("shared") and is_plat("windows") then
52
+ add_defines("GTEST_CREATE_SHARED_LIBRARY=1")
53
+ end
38
54
39
55
target("gtest_main")
40
- set_kind("static")
41
- set_languages("cxx14")
56
+ set_kind("$(kind)")
42
57
set_default(]] .. tostring (package :config (" main" )) .. [[ )
43
58
add_files("googletest/src/gtest_main.cc")
44
59
add_includedirs("googletest/include", "googletest")
45
- add_headerfiles("googletest/include/(**.h) ")
60
+ add_deps("gtest ")
46
61
47
62
target("gmock")
48
- set_kind("static")
49
- set_languages("cxx14")
63
+ set_kind("$(kind)")
50
64
set_default(]] .. tostring (package :config (" gmock" )) .. [[ )
51
65
add_files("googlemock/src/gmock-all.cc")
52
66
add_includedirs("googlemock/include", "googlemock", "googletest/include", "googletest")
53
67
add_headerfiles("googlemock/include/(**.h)")
54
- ]] )
68
+ if is_kind("shared") and is_plat("windows") then
69
+ add_defines("GTEST_CREATE_SHARED_LIBRARY=1")
70
+ end
71
+ add_deps("gtest")
72
+ ]] , std ))
55
73
import (" package.tools.xmake" ).install (package )
56
74
end )
57
75
58
76
on_test (function (package )
77
+ local std = " c++14"
78
+ if package :version () and package :version ():gt (" 1.16.0" ) then
79
+ std = " c++17"
80
+ end
59
81
assert (package :check_cxxsnippets ({test = [[
60
82
int factorial(int number) { return number <= 1 ? number : factorial(number - 1) * number; }
61
83
TEST(FactorialTest, Zero) {
@@ -65,7 +87,7 @@ package("gtest")
65
87
EXPECT_EQ(6, factorial(3));
66
88
EXPECT_EQ(3628800, factorial(10));
67
89
}
68
- ]] }, {configs = {languages = " c++14 " }, includes = " gtest/gtest.h" }))
90
+ ]] }, {configs = {languages = std }, includes = " gtest/gtest.h" }))
69
91
70
92
if package :config (" gmock" ) then
71
93
assert (package :check_cxxsnippets ({test = [[
@@ -97,6 +119,6 @@ package("gtest")
97
119
98
120
EXPECT_TRUE(b_obj.b_foo());
99
121
}
100
- ]] }, {configs = {languages = " c++14 " }, includes = {" gtest/gtest.h" , " gmock/gmock.h" }}))
122
+ ]] }, {configs = {languages = std }, includes = {" gtest/gtest.h" , " gmock/gmock.h" }}))
101
123
end
102
124
end )
0 commit comments