diff options
| author | ruki <[email protected]> | 2020-06-30 22:34:42 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-06-30 09:28:14 +0800 |
| commit | 60a6eb1e461202fa1890b3077861cda406faab5e (patch) | |
| tree | 44f2941e3f70b22fad9894a2255cb2f6b8c6ce89 | |
| parent | 6bdbba44a3c88dda55e81a4f1b75ab443a6c2636 (diff) | |
use cmake to generate xcodeproj
| -rw-r--r-- | CHANGELOG.md | 8 | ||||
| -rwxr-xr-x | xmake/plugins/project/main.lua | 2 | ||||
| -rw-r--r-- | xmake/plugins/project/xcode/xcodeproj.lua | 45 | ||||
| -rw-r--r-- | xmake/plugins/project/xmake.lua | 1 |
4 files changed, 56 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 70519b27a..138eb83a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## master (unreleased) +### New features + +* Add `xmake project -k xcode` generator (use cmake) + ## v2.3.5 ### New features @@ -771,6 +775,10 @@ ## master (开发中) +### 新特性 + +* 添加xcode工程生成器插件,`xmake project -k cmake` (当前采用cmake生成) + ## v2.3.5 ### 新特性 diff --git a/xmake/plugins/project/main.lua b/xmake/plugins/project/main.lua index 7090413ed..626db6e17 100755 --- a/xmake/plugins/project/main.lua +++ b/xmake/plugins/project/main.lua @@ -25,6 +25,7 @@ import("core.project.config") import("make.makefile") import("make.xmakefile") import("cmake.cmakelists") +import("xcode.xcodeproj") import("ninja.build_ninja") import("vstudio.vs") import("vsxmake.vsxmake") @@ -41,6 +42,7 @@ function makers() , xmakefile = xmakefile.make , cmake = cmakelists.make , cmakelists = cmakelists.make + , xcode = xcodeproj.make , ninja = build_ninja.make , vs2002 = vs.make(2002) , vs2003 = vs.make(2003) diff --git a/xmake/plugins/project/xcode/xcodeproj.lua b/xmake/plugins/project/xcode/xcodeproj.lua new file mode 100644 index 000000000..859b97cb5 --- /dev/null +++ b/xmake/plugins/project/xcode/xcodeproj.lua @@ -0,0 +1,45 @@ +--!A cross-platform build utility based on Lua +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- +-- Copyright (C) 2015-2020, TBOOX Open Source Group. +-- +-- @author ruki +-- @file xcodeproj.lua +-- + +-- imports +import(".cmake.cmakelists") +import("lib.detect.find_tool") + +-- make +function make(outputdir) + + -- check + assert(is_plat(os.host()), "only support host platform now!") + + -- find cmake + local cmake = assert(find_tool("cmake"), "we need cmake to generate xcode project!") + + -- get the cmakelists file + local cmakefile = path.join(outputdir, "CMakeLists.txt") + if not os.isfile(cmakefile) then + cmakelists.make(outputdir) + end + assert(os.isfile(cmakefile), "CMakeLists.txt not found!") + + -- generate xcode project + local oldir = os.cd(os.projectdir()) + os.vrunv(cmake.program, {"-G", "Xcode", cmakefile}) + os.cd(oldir) +end diff --git a/xmake/plugins/project/xmake.lua b/xmake/plugins/project/xmake.lua index 1dbaaa993..6d83066e6 100644 --- a/xmake/plugins/project/xmake.lua +++ b/xmake/plugins/project/xmake.lua @@ -43,6 +43,7 @@ task("project") , " - xmakefile (makefile with xmake)" , " - cmake" , " - ninja" + , " - xcode (need cmake)" , " - compile_flags" , " - compile_commands (clang compilation database with json format)" , " - vs (auto detect), vs2002, vs2003, vs2005, vs2008" |
