The wiki source of YSLib documentation.
Revisión | a6460edbb8b09bde7c71b2c1994ad726f0b1bdac (tree) |
---|---|
Tiempo | 2020-12-14 12:34:34 |
Autor | FrankHB <frankhb1989@gmai...> |
Commiter | FrankHB |
Tools/Scripts.zh-CN.md: 移动 stage 2 配置变量;移除变量 CFLAGS_COMMON 和 CXXFLAGS_COMMON ;添加 SHBuild 附加构建选项环境变量等说明。
@@ -506,10 +506,6 @@ | ||
506 | 506 | |
507 | 507 | C 编译器警告命令行选项,默认值为 `$C_CXXFLAGS_WARNING $C_CXXFLAGS_IMPL_WARNING` 。 |
508 | 508 | |
509 | -### 变量 CFLAGS_COMMON | |
510 | - | |
511 | - C 编译器一般命令行选项,默认值为 `$C_CXXFLAGS_COMMON $CFLAGS_STD $CFLAGS_WARNING` 。 | |
512 | - | |
513 | 509 | ### 变量 CXXFLAGS_STD |
514 | 510 | |
515 | 511 | 指定 C++ 标准的编译器命令行选项,默认值为 `-std=c++11` 。 |
@@ -525,10 +521,6 @@ | ||
525 | 521 | * `-Wsign-promo` |
526 | 522 | * 变量 `CXXFLAGS_IMPL_WARNING` 的内容 |
527 | 523 | |
528 | -### 变量 CXXFLAGS_COMMON | |
529 | - | |
530 | - C++ 编译器一般命令行选项,默认值为 `$CXXFLAGS_STD $C_CXXFLAGS_COMMON $CXXFLAGS_WARNING $CXXFLAGS_IMPL_COMMON` 。 | |
531 | - | |
532 | 524 | ### 变量 CXXFLAGS_OPT_DBG |
533 | 525 | |
534 | 526 | C++ 编译器优化和调试相关的命令行选项。在未设置非空的 `SHbuild_Debug` 时,默认值包含以下列表中的内容: |
@@ -540,46 +532,18 @@ | ||
540 | 532 | |
541 | 533 | ### 变量 CFLAGS |
542 | 534 | |
543 | - C 编译器使用的命令行选项,默认值为 `$C_CXXFLAGS_PIC $CFLAGS_COMMON $C_CXXFLAGS_COMMON_IMPL_ $CXXFLAGS_OPT_DBG` 。其中,`C_CXXFLAGS_COMMON_IMPL_` 是根据支持的编译器在内部定义的非公开变量。 | |
535 | + C 编译器使用的命令行选项,默认值为 `$CFLAGS_STD $C_CXXFLAGS_PIC $C_CXXFLAGS_COMMON $CFLAGS_WARNING $C_CXXFLAGS_COMMON_IMPL_ $CXXFLAGS_OPT_DBG` 。其中,`C_CXXFLAGS_COMMON_IMPL_` 是根据支持的编译器在内部定义的非公开变量。 | |
544 | 536 | |
545 | 537 | **注意** 当前和 C++ 编译器选项共用 `CXXFLAGS_OPT_DBG` 。 |
546 | 538 | |
547 | 539 | ### 变量 CXXFLAGS |
548 | 540 | |
549 | - C++ 编译器使用的命令行选项,默认值为 `$C_CXXFLAGS_PIC $CXXFLAGS_COMMON $C_CXXFLAGS_COMMON_IMPL_ $CXXFLAGS_OPT_DBG` 。其中,`C_CXXFLAGS_COMMON_IMPL_` 是根据支持的编译器在内部定义的非公开变量。 | |
541 | + C++ 编译器使用的命令行选项,默认值为 `$CXXFLAGS_STD $C_CXXFLAGS_PIC $C_CXXFLAGS_COMMON $CXXFLAGS_WARNING $CXXFLAGS_IMPL_COMMON $C_CXXFLAGS_COMMON_IMPL_ $CXXFLAGS_OPT_DBG` 。其中,`C_CXXFLAGS_COMMON_IMPL_` 是根据支持的编译器在内部定义的非公开变量。 | |
550 | 542 | |
551 | 543 | ### 变量 LDFLAGS_OPT_DBG |
552 | 544 | |
553 | 545 | 链接器优化和调试相关的命令行选项。在未设置非空的 `SHbuild_Debug` 时,默认值为 `$LDFLAGS_STRIP $LDFLAGS_IMPL_OPT $LDFLAGS_GC` 。 |
554 | 546 | |
555 | -### 变量 LDFLAGS_DYN_BASE | |
556 | - | |
557 | - 指定动态库基础链接选项,默认值和平台相关:若为 Win32 环境则使用 `-shared -Wl,--dll` 否则为 `-shared` 。 | |
558 | - | |
559 | -### 变量 LDFLAGS_DYN_EXTRA | |
560 | - | |
561 | - 指定动态库附加链接选项,默认值等价于 `-Wl,--no-undefined,--dynamic-list-data,--dynamic-list-cpp-new,--dynamic-list-cpp-typeinfo` 。 | |
562 | - | |
563 | -### 变量 LDFLAGS_DYN | |
564 | - | |
565 | - 指定动态库链接选项,默认值为 `$LDFLAGS_DYN_EXTRA $LDFLAGS_DYN` 。 | |
566 | - | |
567 | -### 变量 LIBS_RPATH | |
568 | - | |
569 | - 用于指定在运行时 ELF 映像需要的动态库的路径的链接器选项。在 Win32 默认不设置,其它平台默认值为 `-Wl,-rpath,'\$ORIGIN:\$ORIGIN/../lib'` 。 | |
570 | - | |
571 | -### 变量 LIBPFX | |
572 | - | |
573 | - 库前缀。在 Win32 默认不设置,其它平台默认值为 `lib` 。 | |
574 | - | |
575 | -### 变量 DSOSFX | |
576 | - | |
577 | - 动态库文件名后缀。在 Win32 默认为 `.dll` ,其它平台默认值为 `.so` 。 | |
578 | - | |
579 | -### 变量 EXESFX | |
580 | - | |
581 | - 可执行文件名后缀。在 Win32 默认为 `.exe` ,其它平台默认不设置。 | |
582 | - | |
583 | 547 | ### 变量 LDFLAGS |
584 | 548 | |
585 | 549 | 链接器使用的命令行选项,默认值依次包含以下内容: |
@@ -661,15 +625,17 @@ | ||
661 | 625 | |
662 | 626 | `Tools/Scripts/SHBuild-YSLib-common.txt` 包含一些公共的库,包括支持类似 `Tools/Scripts/SHBuild-common-options.sh` 和 `Tools/Scripts/SHBuild-common-toolchain.sh` 的选项以环境变量的方式配置,但 C 编译器相关的选项除外(不使用而被忽略)。除[关于 shell 和 NPLA1 脚本之间的一般差异](../Development.zh-CN.md)外,和 `Tools/Scripts/SHBuild-common-options.sh` 和 `Tools/Scripts/SHBuild-common-toolchain.sh` 的不同为: |
663 | 627 | |
664 | -* 生成变量默认值的选项之间的空白符可能不同(通常可确保为一个空格)。 | |
665 | -* 按需初始化变量。配置时为确定变量的默认值的检查的调用顺序可能不同。 | |
666 | -* 使用 debug 模式时,`CXXFLAGS_OPT_DBG` 设置为 `-O0 -g -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC` ,不再被环境变量覆盖。 | |
667 | -* 附加支持构建应用的配置,在导出的 `LDFLAGS` 的值中添加 `LIBS_RPATH` 的值。 | |
668 | -* 提供和 shell 脚本不同的函数,详见版本库中的 `doc/NPL.txt` 。 | |
628 | +* 通过调用函数进入**构建环境变量检测**并在之后进入回调函数中构建。 | |
629 | + * 按需初始化变量。构建环境变量检测可能延迟访问以避免不必要初始化的值。配置时为确定变量的默认值的检查的调用顺序可能不同。 | |
630 | + * 使用 debug 模式时,`CXXFLAGS_OPT_DBG` 设置为 `-O0 -g -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC` ,不再被环境变量覆盖。 | |
631 | + * 生成变量默认值的选项之间的空白符可能不同(通常可确保为一个空格)。 | |
632 | + * 附加支持构建应用的配置,在导出的 `LDFLAGS` 的值中添加 `LIBS_RPATH`(参见以下有关内说明)的值。 | |
633 | +* 支持更多变量和默认值。除非另行指定,这些变量在构建环境变量检测中使用。参见以下各节。 | |
634 | +* 提供部分和 shell 脚本不同的函数,详见版本库中的 `doc/NPL.txt` 。 | |
669 | 635 | |
670 | 636 | 这个脚本被 `Tools/Scripts/SHBuild-YSLib-build.txt` 加载,并被 `Tools/install-sysroot.sh` 间接调用。 |
671 | 637 | |
672 | - 可以在外部调用这个脚本的命令行设置变量以覆盖直接指定需要的选项,如: | |
638 | + 可以在外部调用这个脚本的命令行设置变量以覆盖直接指定构建环境变量检测确定的选项,如: | |
673 | 639 | |
674 | 640 | ``` |
675 | 641 | CXX=clang++ CXXFLAGS='-std=c++11 -O2' Tools/install-sysroot.sh |
@@ -679,7 +645,52 @@ | ||
679 | 645 | |
680 | 646 | **这个脚本是公开的工具**,被 `Tools/install-sysroot.sh` 部署到安装路径下的 `var/NPLA1` 目录下。 |
681 | 647 | |
682 | -### Tools/Scripts/SHBuild-YSLib-build.txt | |
648 | +### 变量 LDFLAGS_DYN_BASE | |
649 | + | |
650 | + 指定动态库基础链接选项,默认值和平台相关:若为 Win32 环境则使用 `-shared -Wl,--dll` 否则为 `-shared` 。 | |
651 | + | |
652 | +### 变量 LDFLAGS_DYN_EXTRA | |
653 | + | |
654 | + 指定动态库附加链接选项,默认值等价于 `-Wl,--no-undefined,--dynamic-list-data,--dynamic-list-cpp-new,--dynamic-list-cpp-typeinfo` 。 | |
655 | + | |
656 | +### 变量 LDFLAGS_DYN | |
657 | + | |
658 | + 指定动态库链接选项,默认值为 `$LDFLAGS_DYN_EXTRA $LDFLAGS_DYN` 。 | |
659 | + | |
660 | +### 变量 LIBS_RPATH | |
661 | + | |
662 | + 用于指定在运行时 ELF 映像需要的动态库的路径的链接器选项。在 Win32 默认不设置,其它平台默认值为 `-Wl,-rpath,'\$ORIGIN:\$ORIGIN/../lib'` 。 | |
663 | + | |
664 | +### 变量 LIBPFX | |
665 | + | |
666 | + 库前缀。在 Win32 默认不设置,其它平台默认值为 `lib` 。 | |
667 | + | |
668 | +### 变量 DSOSFX | |
669 | + | |
670 | + 动态库文件名后缀。在 Win32 默认为 `.dll` ,其它平台默认值为 `.so` 。 | |
671 | + | |
672 | +### 变量 EXESFX | |
673 | + | |
674 | + 可执行文件名后缀。在 Win32 默认为 `.exe` ,其它平台默认不设置。 | |
675 | + | |
676 | +### SHBuild 附加构建选项环境变量 | |
677 | + | |
678 | + 若回调函数中调用 SHBuild 构建,可在此之前设置**扩展环境变量**并调用函数 `SHBuild_Extend_CallVariables` 以更新被 SHBuild 使用的环境变量 `LDFLAGS` 和 `LIBS` 的值。这些影响 SHBuild 工具调用构建工具的命令行的 **SHBuild 附加构建选项环境变量**,包括: | |
679 | + | |
680 | +* `SHBuild_CFLAGS` | |
681 | +* `SHBuild_CXXFLAGS` | |
682 | +* `SHBuild_LDFLAGS` | |
683 | +* `SHBuild_LIBS` | |
684 | + | |
685 | + 除非另行指定,SHBuild 附加构建选项环境变量的默认值为空,不被脚本设置。 | |
686 | + | |
687 | +### 其它函数和可在外部设置的其它变量 | |
688 | + | |
689 | + 详见版本库中的 `doc/NPL.txt` 。 | |
690 | + | |
691 | + 其它变量不被构建环境变量检测访问,而通过函数调用生效,如 `SHBuild_Extend_CallVariables` 。 | |
692 | + | |
693 | +## Tools/Scripts/SHBuild-YSLib-build.txt | |
683 | 694 | |
684 | 695 | 这个脚本当前包括和安装相关的流程,实现 `Tools/install-sysroot.sh` 在 stage 1 SHBuild 构建后的主要逻辑。 |
685 | 696 |
@@ -723,10 +734,11 @@ | ||
723 | 734 | |
724 | 735 | 在 stage 2 构建时接受以下外部环境变量(部分被 SHBuild 直接以环境变量的方式接受): |
725 | 736 | |
726 | -* `INCLUDES` 包含路径,和非 SHBuild 中的 `Makefile` 惯用法含义类似。 | |
727 | -* `LDFLAGS` 链接命令行选项。 | |
728 | -* `LIBS` 作为命令行选项的链接时使用的库路径。 | |
729 | -* `LIBS_RPATH` 非 Windows 平台使用的 `rpath` 路径。 | |
737 | +* `INCLUDES` :包含路径,和非 SHBuild 中的 `Makefile` 惯用法含义类似。 | |
738 | +* `LDFLAGS` :链接命令行选项。 | |
739 | +* `LIBS` :作为命令行选项的链接时使用的库路径。 | |
740 | +* `LIBS_RPATH` :非 Windows 平台使用的 `rpath` 路径。 | |
741 | +* SHBuild 附加构建选项环境变量:参见 Tools/Scripts/SHBuild-YSLib-common.txt 。其中变量 `SHBuild_CXXFLAGS` 同时作用在预编译头构建。 | |
730 | 742 | |
731 | 743 | ## Tools/Scripts/SHBuild-BuildApp.txt |
732 | 744 |
@@ -805,7 +817,5 @@ | ||
805 | 817 | |
806 | 818 | 默认情况下, release 配置会在链接器命令行加入 `-mwindows` ,[和 debug 配置编译的程序行为不保证相同](../Prerequisitions.zh-CN.md)。设置非空变量 `SHBuild_NoAdjustSubsystem` 禁用此行为。 |
807 | 819 | |
808 | - 脚本使用包含 YSLib 库的编译器命令行。若有必要,可设置 SHBuild 使用的变量 `SHBuild_CFLAGS` 和 `SHBuild_CXXFLAGS` 作为前缀。 | |
820 | + 脚本使用包含 YSLib 库的编译器命令行。脚本已经导出了用于链接器的包含使用 YSLib 库命令行参数的变量 `LDFLAGS` 和 `LIBS` 。若有必要,可设置 SHBuild 附加构建选项环境变量(参见 Tools/Scripts/SHBuild-YSLib-common.txt )。 | |
809 | 821 | |
810 | - 脚本已经导出了用于链接器的包含使用 YSLib 库命令行参数的变量 `LDFLAGS` 和 `LIBS` 。若有必要,可设置变量 `SHBuild_LDFLAGS` 和 `SHBuild_LIBS` 作为前缀。 | |
811 | - |