diff options
| -rw-r--r-- | manual.md | 45 | ||||
| -rw-r--r-- | zh/README.md | 261 | ||||
| -rw-r--r-- | zh/manual.md | 45 |
3 files changed, 351 insertions, 0 deletions
@@ -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 ###### 定义规则 |
