【问题标题】:How to correctly setup my post-build script in visual studio如何在 Visual Studio 中正确设置我的构建后脚本
【发布时间】:2017-03-27 10:31:24
【问题描述】:

因此,我目前正在尝试使用 Visual Studio 构建脚本从我的 exe 中构建一个 .lib 文件,正如本文接受的答案所建议的那样:Linking to multiple .obj for unit testing a console application。基本上,他们建议在我的项目的构建后事件中放置的构建后脚本是:

lib /NOLOGO /OUT:"$(TargetPath).lib" "$(ProjectDir)\$(Configuration)\*.obj"

这是我当前的目录结构:

-Solution
   - Project 
      -Source
         .cpp files
   - ProjectTester
   - Solution.sln

所以我的命令看起来像这样:

lib /NOLOGO /OUT:"$(TargetPath).lib" "$(ProjectDir)\Source\*.obj"

这目前什么都不做,好像 Visual Studio 完全忽略了这个构建脚本。我的问题是:

$(TargetPath).lib 究竟解析到什么?

我目前对这个构建脚本的理解是否正确?如果是这样,我该如何更改此脚本以执行我想要的操作?

更新:

我已经更改了目标路径中的几个空格,现在我收到了LNK1146 no argument specified with option /OUT: 错误。

【问题讨论】:

    标签: c++ visual-studio build-script


    【解决方案1】:

    您没有提及您正在使用的 Visual Studio 版本。根据记忆,答案变化不大,但我会为 Visual Studio 2015 回答,因为那是我得心应手的。

    探索适用于所有 Visual Studio 版本的宏值的一种方法是使用 ECHO 命令。将您的构建后脚本更改为

    echo TargetPath: "$(TargetPath)"
    

    并且您应该能够在构建项目时在“输出”窗口中读取宏的值。然而,在大多数现代版本的 Visual Studio 中,Echo 技巧不应该是必需的。

    Post-Build Event 属性页面中,单击Command Line 字段末尾的下拉菜单,然后单击。在 Visual Studio 2015 中,随后的对话框将向您显示命令行和评估值,以便您可以看到扩展了宏的命令行。

    还有宏>>按钮。单击该按钮,您将看到一个显示每个宏名称及其值的对话框。列表顶部的文本框可让您将结果过滤到包含字符序列的结果。

    $(TargetPath) 被描述为here “构建的主输出文件的绝对路径名(定义为驱动器 + 路径 + 基本名称 + 文件扩展名)”。真正的意思是 General 上的 Output DirectoryTarget NameTarget Extension 属性的值属性页。

    LIB 工具描述为here。要获取有关 LIB 运行的更多信息,您可以添加 /VERBOSE 选项。您也可以删除 /NOLOGO 选项,这样您至少可以确认您正在运行 LIB(并运行正确版本的 LIB)。

    很难说出“什么都不做”的真正含义。我猜最有可能的失败是正在创建 lib 文件 - 但不是你期望的地方;或者 $(ProjectDir)\Source 中没有 obj 文件。

    探索后一种情况的一种方法是将构建后事件更改为

    dir "$(ProjectDir)\Source\*.obj"
    

    然后检查构建输出以查看是否列出了 obj 文件。如果目录中没有 .obj 文件,输出窗口将显示类似于

    1>   Directory of C:\TestPrograms\vc.net.2015\VCConsole
    1>
    1>  File Not Found
    

    错误列表窗口将显示 dir 命令以代码 1 退出。

    【讨论】:

    • 你明白了,先生。这就是我在粘贴代码后蒙蔽的结果(我感到羞耻)。我的 .obj 文件显然被输出到我自己的中间目录而不是我的源目录。一旦解决了这个问题,一切都会奏效。谢谢。
    • P.S.这是 VS 2015
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多