From 598428d35d8f259a87102d1fe17027a503633652 Mon Sep 17 00:00:00 2001 From: Arthur LAURENT Date: Thu, 5 Jan 2023 17:04:40 +0100 Subject: conditionnaly add c++17 flag on qt rules --- xmake/rules/qt/load.lua | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/xmake/rules/qt/load.lua b/xmake/rules/qt/load.lua index 0d6ea17f8..32be0bd61 100644 --- a/xmake/rules/qt/load.lua +++ b/xmake/rules/qt/load.lua @@ -102,6 +102,17 @@ function _add_includedirs(target, includedirs) end end +-- get target c++ version +function _get_target_cppversion(target) + local languages = target:get("languages") + for _, language in ipairs(languages) do + if language:startswith("c++") or language:startswith("cxx") then + local v = language:match("%d+") or language:match("latest") + if v then return v end + end + end +end + -- the main entry function main(target, opt) @@ -138,14 +149,22 @@ function main(target, opt) if not cxxlang then -- Qt6 require at least '/std:c++17' -- @see https://github.com/xmake-io/xmake/issues/1183 + local cppversion = _get_target_cppversion(target) if qt_sdkver:ge("6.0") then - target:add("languages", "c++17") + -- add conditionnaly c++17 to avoid for example "cl : Command line warning D9025 : overriding '/std:c++latest' with '/std:c++17'" warning + if (not cppversion) or (not cppversion == "latest") or (tonumber(cppversion) and tonumber(cppversion) < 17) then + target:add("languages", "c++17") + end -- @see https://github.com/xmake-io/xmake/issues/2071 if target:is_plat("windows") then target:add("cxxflags", "/Zc:__cplusplus") target:add("cxxflags", "/permissive-") end else + -- add conditionnaly c++11 to avoid for example "cl : Command line warning D9025 : overriding '/std:c++latest' with '/std:c++11'" warning + if (not cppversion) or (not cppversion == "latest") or (tonumber(cppversion) and tonumber(cppversion) < 11) then + target:add("languages", "c++17") + end target:add("languages", "c++11") end end -- cgit v1.3.1 From 1938de01114d01584b8a6e24b8e7c7980a9250eb Mon Sep 17 00:00:00 2001 From: ruki Date: Fri, 6 Jan 2023 09:23:38 +0800 Subject: Update load.lua --- xmake/rules/qt/load.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/xmake/rules/qt/load.lua b/xmake/rules/qt/load.lua index 32be0bd61..022b37d5b 100644 --- a/xmake/rules/qt/load.lua +++ b/xmake/rules/qt/load.lua @@ -152,7 +152,7 @@ function main(target, opt) local cppversion = _get_target_cppversion(target) if qt_sdkver:ge("6.0") then -- add conditionnaly c++17 to avoid for example "cl : Command line warning D9025 : overriding '/std:c++latest' with '/std:c++17'" warning - if (not cppversion) or (not cppversion == "latest") or (tonumber(cppversion) and tonumber(cppversion) < 17) then + if (not cppversion) or (cppversion ~= "latest") or (tonumber(cppversion) and tonumber(cppversion) < 17) then target:add("languages", "c++17") end -- @see https://github.com/xmake-io/xmake/issues/2071 @@ -162,10 +162,9 @@ function main(target, opt) end else -- add conditionnaly c++11 to avoid for example "cl : Command line warning D9025 : overriding '/std:c++latest' with '/std:c++11'" warning - if (not cppversion) or (not cppversion == "latest") or (tonumber(cppversion) and tonumber(cppversion) < 11) then - target:add("languages", "c++17") + if (not cppversion) or (cppversion ~= "latest") or (tonumber(cppversion) and tonumber(cppversion) < 11) then + target:add("languages", "c++11") end - target:add("languages", "c++11") end end -- cgit v1.3.1