小编Lan*_*SFT的帖子

带有使用多个值的生成器表达式的 CMake set_property 命令

我将 CMake v3.13.4 与Visual Studio 2017 Win64生成器一起使用,我需要修改 Visual Studio Librarian(对于 CMake 对象库)的命令行选项。

\n\n

为了实现这一点,CMake 提供了可以通过and命令STATIC_LIBRARY_OPTIONS设置的目标属性。set_propertyset_target_properties

\n\n

文档指出STATIC_LIBRARY_OPTIONS支持生成器表达式:

\n\n
\n

的内容STATIC_LIBRARY_OPTIONS可以使用 \xe2\x80\x9c 生成器表达式\xe2\x80\x9d 和\n 语法$<...>。有关可用表达式,请参阅cmake-generator-expressions(7) \n 手册。有关定义构建系统属性的更多信息,请参阅cmake-buildsystem(7) \n 手册。

\n
\n\n

但是:无论我尝试什么,这些值都没有正确转义\xc2\xb4,例如

\n\n
set_property(TARGET object_library PROPERTY STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:/WX /NOLOGO /LTCG /ERRORREPORT:NONE>)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 Visual Studio 中会导致以下结果:

\n\n
All Options: `/OUT:"..." /LTCG /MACHINE:X64 /NOLOGO \nAdditional Options: %(AdditionalOptions) /machine:x64 ""$"<1:/WX" "/ERRORREPORT:NONE>"\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试了以下方法,但似乎都失败了。

\n\n
set_property(TARGET object_library PROPERTY\n  STATIC_LIBRARY_OPTIONS …
Run Code Online (Sandbox Code Playgroud)

build cmake visual-studio cmake-language

4
推荐指数
1
解决办法
4526
查看次数

MSB4166 间歇性构建中断:子节点“#”过早退出。VS 15.9

我们看到我们的自动化构建系统间歇性中断。该错误与 MSBuild 子节点有关,并且似乎没有任何日志记录或错误信息。该错误可能在任何节点上以及构建中的不同点上随机发生。而且,我无法通过在命令行上运行构建来重现该问题。

 0>MSBUILD : error MSB4166: Child node "8" exited prematurely. Shutting down.
Diagnostic information may be found in files in "C:\Users\<user>\AppData\Local\Temp\"
and will be named MSBuild_*.failure.txt. This location can be changed by setting
the MSBUILDDEBUGPATH environment variable to a different directory.  
Run Code Online (Sandbox Code Playgroud)

预期的日志文件 MSBuild_*.failure.txt 不存在,并且控制台输出中没有任何信息表明导致失败的原因。我们使用“Microsoft (R) Build Engine version 15.9.21+g9802d43bc3 for .NET Framework”和 Jenkins 2.151.3

msbuild jenkins visual-studio-2017

3
推荐指数
1
解决办法
5989
查看次数

我的 Visual Studio 2019 WPF 应用程序在它应该是 exe 时将 dll 设置为输出

这是我第一次尝试制作可部署的程序。在创建了一个运行良好的小型 WPF XAML 应用程序(即我可以在 bin 文件夹中运行可执行文件)之后,我试图将它包装在一个安装程序中。

在遵循 WiX 和“Microsoft Visual Studio 安装程序项目”的多个在线指导后。两者都制作安装程序包,但是当我选择“主要输出”时,它们仅针对 WPF XAML 输出中的 dll 文件。这似乎源于 WPF 项目的构建。

如何调整构建过程的主要输出,使其包含在安装程序中?

指定 dll 作为输出文件的构建输出屏幕截图:

在此处输入图片说明

要添加更多详细信息:

这可能是一个wpf(.net core)应用程序而不是一个wpf(.net framework)。查看 Elton 屏幕截图中的输出窗口,我们可以发现输出是 xx.dll 而不是 xx.exe。

如果我们在这个方案中创建了一个Installer项目,在Installer项目上右键=>Add=>Project Output=>Primary output,在installer项目中包含WPF的输出,只有xx.dll被认为是wpf的输出,而不是xx 。可执行程序。

所以在VS中建好Installer工程后,双击setup.exe(installer工程的输出),wpf.exe没有安装好。

c# msbuild wpf visual-studio

3
推荐指数
2
解决办法
2085
查看次数