aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-05-30 00:58:35 +0800
committerruki <waruqi@gmail.com>2018-05-29 23:51:33 +0800
commit6e12491c2d7fe119a05fbd564d707577feaedc7b (patch)
treef7244e92ff79c1131b1c9751921d2c79bb075f27
parent561119879fcbb31bc93715c493fd9302285fd138 (diff)
downloadxmake-docs-6e12491c2d7fe119a05fbd564d707577feaedc7b.tar.gz
xmake-docs-6e12491c2d7fe119a05fbd564d707577feaedc7b.zip
update readme docs
-rw-r--r--manual.md45
-rw-r--r--zh/README.md261
-rw-r--r--zh/manual.md45
3 files changed, 351 insertions, 0 deletions
diff --git a/manual.md b/manual.md
index 18e2f6ef..7e0b43d6 100644
--- a/manual.md
+++ b/manual.md
@@ -3687,6 +3687,51 @@ target("kcs")
用法跟[wdk.umdf.binary](#wdk-umdf-binary)和[wdk.kmdf.binary](#wdk-kmdf-binary)类似。
+###### wdk.tracewpp
+
+用于启用tracewpp预处理源文件:
+
+```lua
+target("nonpnp")
+
+ -- add rules
+ add_rules("wdk.kmdf.driver")
+
+ -- add flags for rule: wdk.tracewpp
+ add_values("wdk.tracewpp.flags", "-func:TraceEvents(LEVEL,FLAGS,MSG,...)", "-func:Hexdump((LEVEL,FLAGS,MSG,...))")
+
+ -- add files
+ add_files("driver/*.c", {rule = "wdk.tracewpp"})
+ add_files("driver/*.rc")
+```
+
+###### win.sdk.application
+
+编译生成winsdk应用程序。
+
+```lua
+-- add rules
+add_rules("mode.debug", "mode.release")
+
+-- define target
+target("usbview")
+
+ -- windows application
+ add_rules("win.sdk.application")
+
+ -- add files
+ add_files("*.c", "*.rc")
+ add_files("xmlhelper.cpp", {rule = "win.sdk.dotnet"})
+```
+
+###### wdk.sdk.dotnet
+
+用于指定某些c++源文件作为c++.net来编译。
+
+```lua
+add_files("xmlhelper.cpp", {rule = "win.sdk.dotnet"})
+```
+
更多WDK规则描述见:[#159](https://github.com/tboox/xmake/issues/159)
##### rule
diff --git a/zh/README.md b/zh/README.md
index 83546857..f6cc2533 100644
--- a/zh/README.md
+++ b/zh/README.md
@@ -320,6 +320,267 @@ target("test")
通过`add_deps`将一个动态库自动链接到test可执行程序。
+#### Qt程序
+
+创建一个空工程:
+
+```console
+$ xmake create -l c++ -t console_qt test
+$ xmake create -l c++ -t static_qt test
+$ xmake create -l c++ -t shared_qt test
+$ xmake create -l c++ -t quickapp_qt test
+```
+
+默认会自动探测Qt环境,当然也可以指定Qt SDK环境目录:
+
+```console
+$ xmake f --qt=~/Qt/Qt5.9.1
+```
+
+更多详情可以参考:[#160](https://github.com/tboox/xmake/issues/160)
+
+##### 静态库程序
+
+```lua
+target("qt_static_library")
+ add_rules("qt.static")
+ add_files("src/*.cpp")
+ add_frameworks("QtNetwork", "QtGui")
+```
+
+##### 动态库程序
+
+```lua
+target("qt_shared_library")
+ add_rules("qt.shared")
+ add_files("src/*.cpp")
+ add_frameworks("QtNetwork", "QtGui")
+```
+
+##### 控制台程序
+
+```lua
+target("qt_console")
+ add_rules("qt.console")
+ add_files("src/*.cpp")
+```
+
+##### Quick应用程序
+
+```lua
+target("qt_quickapp")
+ add_rules("qt.application")
+ add_files("src/*.cpp")
+ add_files("src/qml.qrc")
+ add_frameworks("QtQuick")
+```
+
+##### Widgets应用程序
+
+```lua
+target("qt_widgetapp")
+ add_rules("qt.application")
+ add_files("src/*.cpp")
+ add_files("src/mainwindow.ui")
+ add_files("src/mainwindow.h") -- 添加带有 Q_OBJECT 的meta头文件
+ add_frameworks("QtWidgets")
+```
+
+#### Cuda程序
+
+创建一个空工程:
+
+```console
+$ xmake create -P test -l cuda
+$ cd test
+$ xmake
+```
+
+```lua
+target("cuda_console")
+ set_kind("binary")
+ add_files("src/*.cu")
+
+ -- generate SASS code for each SM architecture
+ for _, sm in ipairs({"30", "35", "37", "50", "52", "60", "61", "70"}) do
+ add_cuflags("-gencode arch=compute_" .. sm .. ",code=sm_" .. sm)
+ add_ldflags("-gencode arch=compute_" .. sm .. ",code=sm_" .. sm)
+ end
+
+ -- generate PTX code from the highest SM architecture to guarantee forward-compatibility
+ sm = "70"
+ add_cuflags("-gencode arch=compute_" .. sm .. ",code=compute_" .. sm)
+ add_ldflags("-gencode arch=compute_" .. sm .. ",code=compute_" .. sm)
+```
+
+默认会自动探测cuda环境,当然也可以指定Cuda SDK环境目录:
+
+```console
+$ xmake f --cuda=/usr/local/cuda-9.1/
+$ xmake
+```
+
+更多详情可以参考:[#158](https://github.com/tboox/xmake/issues/158)
+
+#### WDK驱动程序
+
+默认会自动探测wdk所在环境,当然也可以指定wdk sdk环境目录:
+
+```console
+$ xmake f --wdk="G:\Program Files\Windows Kits\10" -c
+$ xmake
+```
+
+更多详情可以参考:[#159](https://github.com/tboox/xmake/issues/159)
+
+##### umdf驱动程序
+
+```lua
+target("echo")
+ add_rules("wdk.umdf.driver")
+ add_files("driver/*.c")
+ add_files("driver/*.inx")
+ add_includedirs("exe")
+
+target("app")
+ add_rules("wdk.umdf.binary")
+ add_files("exe/*.cpp")
+```
+
+##### kmdf驱动程序
+
+```lua
+target("nonpnp")
+ add_rules("wdk.kmdf.driver")
+ add_values("wdk.tracewpp.flags", "-func:TraceEvents(LEVEL,FLAGS,MSG,...)", "-func:Hexdump((LEVEL,FLAGS,MSG,...))")
+ add_files("driver/*.c", {rule = "wdk.tracewpp"})
+ add_files("driver/*.rc")
+
+target("app")
+ add_rules("wdk.kmdf.binary")
+ add_files("exe/*.c")
+ add_files("exe/*.inf")
+```
+
+##### wdm驱动程序
+
+```lua
+target("kcs")
+ add_rules("wdk.wdm.driver")
+ add_values("wdk.man.flags", "-prefix Kcs")
+ add_values("wdk.man.resource", "kcsCounters.rc")
+ add_values("wdk.man.header", "kcsCounters.h")
+ add_values("wdk.man.counter_header", "kcsCounters_counters.h")
+ add_files("*.c", "*.rc", "*.man")
+```
+
+```lua
+target("msdsm")
+ add_rules("wdk.wdm.driver")
+ add_values("wdk.tracewpp.flags", "-func:TracePrint((LEVEL,FLAGS,MSG,...))")
+ add_files("*.c", {rule = "wdk.tracewpp"})
+ add_files("*.rc", "*.inf")
+ add_files("*.mof|msdsm.mof")
+ add_files("msdsm.mof", {values = {wdk_mof_header = "msdsmwmi.h"}})
+```
+
+##### 生成驱动包
+
+可以通过以下命令生成.cab驱动包:
+
+```console
+$ xmake [p|package]
+$ xmake [p|package] -o outputdir
+```
+
+输出的目录结构如下:
+
+```
+ - drivers
+ - sampledsm
+ - debug/x86/sampledsm.cab
+ - release/x64/sampledsm.cab
+ - debug/x86/sampledsm.cab
+ - release/x64/sampledsm.cab
+```
+
+##### 驱动签名
+
+默认编译禁用签名,可以通过`set_values("wdk.sign.mode", ...)`设置签名模式来启用签名。
+
+###### 测试签名
+
+测试签名一般本机调试时候用,可以使用xmake自带的test证书来进行签名,例如:
+
+```lua
+target("msdsm")
+ add_rules("wdk.wdm.driver")
+ set_values("wdk.sign.mode", "test")
+```
+
+不过这种情况下,需要用户手动在管理员模式下,执行一遍:`$xmake l utils.wdk.testcert install`,来生成和注册test证书到本机环境。
+这个只需要执行一次就行了,后续就可以正常编译和签名了。
+
+当然也可以使用本机已有的有效证书去签名。
+
+从sha1来选择合适的证书进行签名:
+
+```lua
+target("msdsm")
+ add_rules("wdk.wdm.driver")
+ set_values("wdk.sign.mode", "test")
+ set_values("wdk.sign.thumbprint", "032122545DCAA6167B1ADBE5F7FDF07AE2234AAA")
+```
+
+从store/company来选择合适的证书进行签名:
+
+```lua
+target("msdsm")
+ add_rules("wdk.wdm.driver")
+ set_values("wdk.sign.mode", "test")
+ set_values("wdk.sign.store", "PrivateCertStore")
+ set_values("wdk.sign.company", "tboox.org(test)")
+```
+
+###### 正式签名
+
+通过指定对应的正式签名证书文件进行签名:
+
+```lua
+target("msdsm")
+ add_rules("wdk.wdm.driver")
+ set_values("wdk.sign.mode", "release")
+ set_values("wdk.sign.company", "xxxx")
+ set_values("wdk.sign.certfile", path.join(os.projectdir(), "xxxx.cer"))
+```
+
+##### 生成低版本驱动
+
+如果想在wdk10环境编译生成win7, win8等低版本系统支持的驱动,可以通过设置`wdk.env.winver`来切换系统版本:
+
+```lua
+set_values("wdk.env.winver", "win10")
+set_values("wdk.env.winver", "win10_rs3")
+set_values("wdk.env.winver", "win81")
+set_values("wdk.env.winver", "win8")
+set_values("wdk.env.winver", "win7")
+set_values("wdk.env.winver", "win7_sp1")
+set_values("wdk.env.winver", "win7_sp2")
+set_values("wdk.env.winver", "win7_sp3")
+```
+
+#### WinSDK程序
+
+```lua
+target("usbview")
+ add_rules("win.sdk.application")
+
+ add_files("*.c", "*.rc")
+ add_files("xmlhelper.cpp", {rule = "win.sdk.dotnet"})
+```
+
+更多详情可以参考:[#173](https://github.com/tboox/xmake/issues/173)
+
## 配置
通过`xmake f|config`配置命令,设置构建前的相关配置信息,详细参数选项,请运行: `xmake f --help`。
diff --git a/zh/manual.md b/zh/manual.md
index 78a9a121..11534198 100644
--- a/zh/manual.md
+++ b/zh/manual.md
@@ -3706,8 +3706,53 @@ target("kcs")
用法跟[wdk.umdf.binary](#wdk-umdf-binary)和[wdk.kmdf.binary](#wdk-kmdf-binary)类似。
+###### wdk.tracewpp
+
+用于启用tracewpp预处理源文件:
+
+```lua
+target("nonpnp")
+
+ -- add rules
+ add_rules("wdk.kmdf.driver")
+
+ -- add flags for rule: wdk.tracewpp
+ add_values("wdk.tracewpp.flags", "-func:TraceEvents(LEVEL,FLAGS,MSG,...)", "-func:Hexdump((LEVEL,FLAGS,MSG,...))")
+
+ -- add files
+ add_files("driver/*.c", {rule = "wdk.tracewpp"})
+ add_files("driver/*.rc")
+```
+
更多WDK规则描述见:[#159](https://github.com/tboox/xmake/issues/159)
+###### win.sdk.application
+
+编译生成winsdk应用程序。
+
+```lua
+-- add rules
+add_rules("mode.debug", "mode.release")
+
+-- define target
+target("usbview")
+
+ -- windows application
+ add_rules("win.sdk.application")
+
+ -- add files
+ add_files("*.c", "*.rc")
+ add_files("xmlhelper.cpp", {rule = "win.sdk.dotnet"})
+```
+
+###### wdk.sdk.dotnet
+
+用于指定某些c++源文件作为c++.net来编译。
+
+```lua
+add_files("xmlhelper.cpp", {rule = "win.sdk.dotnet"})
+```
+
##### rule
###### 定义规则