diff options
| author | ruki <[email protected]> | 2020-10-20 00:36:32 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-10-20 00:36:32 +0800 |
| commit | fe0e074ff21fee5dd16e66c3b52a389cea8b08e4 (patch) | |
| tree | 448e475494aa72aa251648b9fdcce390e3929197 | |
| parent | 965bccf5adee7a4a1c0e55b7c39d5637a3e95c15 (diff) | |
support set_languages for cmakelists
| -rw-r--r-- | CHANGELOG.md | 8 | ||||
| -rw-r--r-- | xmake/plugins/project/cmake/cmakelists.lua | 27 |
2 files changed, 35 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 893d73044..e7e35f65a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## master (unreleased) +### Change + +* [#997](https://github.com/xmake-io/xmake/issues/997): Support to set std lanuages for `xmake project -k cmake` + ## v2.3.8 ### New features @@ -842,6 +846,10 @@ ## master (开发中) +### 改进 + +* [#997](https://github.com/xmake-io/xmake/issues/997): `xmake project -k cmake` 插件增加对 `set_languages` 的支持 + ## v2.3.8 ### 新特性 diff --git a/xmake/plugins/project/cmake/cmakelists.lua b/xmake/plugins/project/cmake/cmakelists.lua index d669f0162..fe8a66871 100644 --- a/xmake/plugins/project/cmake/cmakelists.lua +++ b/xmake/plugins/project/cmake/cmakelists.lua @@ -302,6 +302,30 @@ function _add_target_warnings(cmakelists, target) end end +-- add target languages +function _add_target_languages(cmakelists, target) + local features = + { + c89 = "c_std_90" + , c99 = "c_std_99" + , c11 = "c_std_11" + , cxx98 = "cxx_std_98" + , cxx11 = "cxx_std_11" + , cxx14 = "cxx_std_14" + , cxx17 = "cxx_std_17" + , cxx20 = "cxx_std_20" + } + local languages = target:get("languages") + if languages then + for _, lang in ipairs(languages) do + local feature = features[lang] or (features[lang:replace("++", "xx")]) + if feature then + cmakelists:print("target_compile_features(%s PRIVATE %s)", target:name(), feature) + end + end + end +end + -- add target optimization function _add_target_optimization(cmakelists, target) local flags_gcc = @@ -458,6 +482,9 @@ function _add_target(cmakelists, target) -- add target warnings _add_target_warnings(cmakelists, target) + -- add target languages + _add_target_languages(cmakelists, target) + -- add target optimization _add_target_optimization(cmakelists, target) |
