$(OutDir) 的含义是什么?

25

我正在查看我的Visual Studio项目的属性,看到了以下内容:

$(OutDir)\$(ProjectName).exe

我想知道 Visual Studio 是如何知道 outdir 的值的,我应该如何查看这个值。此外,$(OutDir)\$(ProjectName).exe 是哪种语言写成的,例如 C#、Python 等?换句话说,它是用什么语言编写的?

4个回答

28

$(OutDir)是Visual Studio构建属性宏。

您可以使用许多属性对话框中的Macros >>按钮查看宏的值。

例如,在属性->常规->输出目录中,单击值文本框中的下拉框,选择编辑...,然后在弹出的对话框中单击Macros >>按钮。这将为您提供所有宏及其当前值的列表。

$(OutputDir)应设置为当前配置的输出目录,例如:$(SolutionDir)/$(Configuration)\

请注意,Windows环境变量作为构建属性宏导入到您的项目中,因此在宏列表中您会看到,例如,$(Path)$(HOME)$(TEMP)


1
@程序员 我明白了。是的,从DOS/cmd你可以随时输入set来获取列表。你也可以右键单击桌面上的“计算机”图标,选择“属性”,在新窗口中点击左侧边栏中的“高级系统设置”,然后在“高级”选项卡中,点击“环境变量”按钮。 - pb2q
我找不到在“属性->常规->输出目录”中点击“属性”的位置。 - Tola Odejayi
@Alex75 很抱歉我无法提供更多帮助:自从这个回答以来,我没有深入研究过这个配置。 - pb2q
@pb2q 在构建期间将它们输出到屏幕上,并在程序执行期间打印出来。这是因为我在构建系统上遇到了很多文件找不到的问题,而宏没有像我的机器一样设置,所以我想确认文件(包括和单元测试执行期间使用的文件)是否被查找到了正确的位置。 - Denis
1
@Denis,我在这里尝试一下,无法在VS中验证。1)在输出窗口中打印:据我记得,您可以在Pre/Post-Build步骤中执行类似DOS样式的命令。因此,请尝试创建一个Post-Build步骤,例如ECHO $(OutputDir)。2)作为程序输出的一部分打印:这将取决于您的环境/语言。但是,如果这些宏是像我的答案中建议的那样的环境变量,则可以使用C API,查看getenv和相关函数。我还建议在SO上创建一个新的顶级问题,并提供您的具体信息。 - pb2q
显示剩余9条评论

7

1

这些是MSBuild属性。它们可以是用户定义的或环境变量。


0

您可以修改文件 the_name_of_your_prog.VCPROJ(例如:ttfmfc)

并将 $(SolutionDir)$(ConfigurationName)$(SolutionDir) 替换为 F:\debug(F:\debug 在 RAM 磁盘或任何其他文件夹中)

在下面的示例中,仅更改了调试配置:
Visual Studio 2008 将每个 [ 替换为 (小于号),将每个 ] 替换为 (大于号)

[?xml version="1.0" encoding="Windows-1252"?]

[VisualStudioProject
    ProjectType="Visual C++"
    Version="9.00"
    Name="ttsmfc"
    ProjectGUID="{0B52B3C5-7AD5-4780-92E9-98674E486261}"
    RootNamespace="ttsmfc"
    Keyword="MFCProj"
    TargetFrameworkVersion="196613"
    ]

    [Platforms]

        [Platform
            Name="Win32"
        /]

    [/Platforms]

    [ToolFiles]

    [/ToolFiles]

    [Configurations]

        [Configuration
            Name="Debug|Win32"
            OutputDirectory="F:\Debug"
            IntermediateDirectory="F:\Debug"
            ConfigurationType="1"
            UseOfMFC="2"
            CharacterSet="1"
            ]

            [Tool
                Name="VCPreBuildEventTool"
            /]

            [Tool
                Name="VCCustomBuildTool"
            /]

            [Tool
                Name="VCXMLDataGeneratorTool"
            /]

            [Tool
                Name="VCWebServiceProxyGeneratorTool"
            /]

            [Tool
                Name="VCMIDLTool"
                PreprocessorDefinitions="_DEBUG"
                MkTypLibCompatible="true"
                SuppressStartupBanner="true"
                TargetEnvironment="1"
                TypeLibraryName="f:\Debug/ort.tlb"
                HeaderFileName=""
            /]

            [Tool
                Name="VCCLCompilerTool"
                Optimization="0"
                PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG"
                MinimalRebuild="true"
                BasicRuntimeChecks="3"
                RuntimeLibrary="3"
                UsePrecompiledHeader="2"
                PrecompiledHeaderThrough="stdafx.h"
                PrecompiledHeaderFile="F:\Debug/ort.pch"
                AssemblerListingLocation="F:\Debug/"
                ObjectFile="F:\Debug/"
                ProgramDataBaseFileName="F:\Debug/"
                WarningLevel="3"
                DebugInformationFormat="4"
            /]

            [Tool
                Name="VCManagedResourceCompilerTool"
            /]

            [Tool
                Name="VCResourceCompilerTool"
                PreprocessorDefinitions="_DEBUG"
                Culture="1036"
                AdditionalIncludeDirectories="$(IntDir)"
            /]

            [Tool
                Name="VCPreLinkEventTool"
            /]

            [Tool
                Name="VCLinkerTool"
                AdditionalDependencies="winmm.lib"
                LinkIncremental="2"
                GenerateDebugInformation="true"
                SubSystem="2"
                TargetMachine="1"
            /]

            [Tool
                Name="VCALinkTool"
            /]

            [Tool
                Name="VCManifestTool"
            /]

            [Tool
                Name="VCXDCMakeTool"
            /]

            [Tool
                Name="VCBscMakeTool"
            /]

            [Tool
                Name="VCFxCopTool"
            /]

            [Tool
                Name="VCAppVerifierTool"
            /]

            [Tool
                Name="VCPostBuildEventTool"
            /]

        [/Configuration]

        [Configuration
            Name="Release|Win32"
            OutputDirectory="$(SolutionDir)$(ConfigurationName)"
            IntermediateDirectory="$(ConfigurationName)"
            ConfigurationType="1"
            UseOfMFC="2"
            CharacterSet="1"
            WholeProgramOptimization="1"
            ]

            [Tool
                Name="VCPreBuildEventTool"
            /]

            [Tool
                Name="VCCustomBuildTool"
            /]

            [Tool
                Name="VCXMLDataGeneratorTool"
            /]

            [Tool
                Name="VCWebServiceProxyGeneratorTool"
            /]

            [Tool
                Name="VCMIDLTool"
                PreprocessorDefinitions="NDEBUG"
                MkTypLibCompatible="false"
                ValidateParameters="true"
            /]

            [Tool
                Name="VCCLCompilerTool"
                Optimization="2"
                EnableIntrinsicFunctions="true"
                PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG"
                MinimalRebuild="false"
                RuntimeLibrary="2"
                EnableFunctionLevelLinking="true"
                UsePrecompiledHeader="2"
                WarningLevel="3"
                DebugInformationFormat="3"
            /]

            [Tool
                Name="VCManagedResourceCompilerTool"
            /]

            [Tool
                Name="VCResourceCompilerTool"
                PreprocessorDefinitions="NDEBUG"
                Culture="1036"
                AdditionalIncludeDirectories="$(IntDir)"
            /]

            [Tool
                Name="VCPreLinkEventTool"
            /]

            [Tool
                Name="VCLinkerTool"
                AdditionalDependencies="winmm.lib"
                LinkIncremental="1"
                GenerateDebugInformation="true"
                SubSystem="2"
                OptimizeReferences="2"
                EnableCOMDATFolding="2"
                TargetMachine="1"
            /]

            [Tool
                Name="VCALinkTool"
            /]

            [Tool
                Name="VCManifestTool"
            /]

            [Tool
                Name="VCXDCMakeTool"
            /]

            [Tool
                Name="VCBscMakeTool"
            /]

            [Tool
                Name="VCFxCopTool"
            /]

            [Tool
                Name="VCAppVerifierTool"
            /]

            [Tool
                Name="VCPostBuildEventTool"
            /]

        [/Configuration]

    [/Configurations]

    [References]

    [/References]

    [Files]

        [Filter
            Name="Fichiers sources"
            Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
            UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
            ]

            [File
                RelativePath=".\Buffer.cpp"
                ]

            [/File]

            [File
                RelativePath=".\ChangeRes.cpp"
                ]

            [/File]

            [File
                RelativePath=".\errorprint.cpp"
                ]

            [/File]

            [File
                RelativePath=".\MainFrm.cpp"
                ]

            [/File]

            [File
                RelativePath=".\Mot.cpp"
                ]

            [/File]

            [File
                RelativePath=".\Pipe.cpp"
                ]

            [/File]

            [File
                RelativePath=".\PtrFifo.cpp"
                ]

            [/File]

            [File
                RelativePath=".\Reco.cpp"
                ]

            [/File]

            [File
                RelativePath=".\SoundBase.cpp"
                ]

            [/File]

            [File
                RelativePath=".\SoundFile.cpp"
                ]

            [/File]

            [File
                RelativePath=".\SoundIn.cpp"
                ]

            [/File]

            [File
                RelativePath=".\SoundOut.cpp"
                ]

            [/File]

            [File
                RelativePath=".\stdafx.cpp"
                ]

                [FileConfiguration
                    Name="Debug|Win32"
                    ]

                    [Tool
                        Name="VCCLCompilerTool"
                        UsePrecompiledHeader="1"
                    /]

                [/FileConfiguration]

                [FileConfiguration
                    Name="Release|Win32"
                    ]

                    [Tool
                        Name="VCCLCompilerTool"
                        UsePrecompiledHeader="1"
                    /]

                [/FileConfiguration]

            [/File]

            [File
                RelativePath=".\ttsmfc.cpp"
                ]

            [/File]

            [File
                RelativePath=".\ttsmfcDoc.cpp"
                ]

            [/File]

            [File
                RelativePath=".\ttsmfcView.cpp"
                ]

            [/File]

            [File
                RelativePath=".\vegView.cpp"
                ]

            [/File]

        [/Filter]

        [Filter
            Name="Fichiers d'en-tête"
            Filter="h;hpp;hxx;hm;inl;inc;xsd"
            UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
            ]

            [File
                RelativePath=".\Buffer.h"
                ]

            [/File]

            [File
                RelativePath=".\errorprint.h"
                ]

            [/File]

            [File
                RelativePath=".\fister.h"
                ]

            [/File]

            [File
                RelativePath=".\MainFrm.h"
                ]

            [/File]

            [File
                RelativePath=".\Mot.h"
                ]

            [/File]

            [File
                RelativePath=".\Pipe.h"
                ]

            [/File]

            [File
                RelativePath=".\PtrFifo.h"
                ]

            [/File]

            [File
                RelativePath=".\Reco.h"
                ]

            [/File]

            [File
                RelativePath=".\Resource.h"
                ]

            [/File]

            [File
                RelativePath=".\SoundBase.h"
                ]

            [/File]

            [File
                RelativePath=".\SoundFile.h"
                ]

            [/File]

            [File
                RelativePath=".\SoundIn.h"
                ]

            [/File]

            [File
                RelativePath=".\SoundOut.h"
                ]

            [/File]

            [File
                RelativePath=".\stdafx.h"
                ]

            [/File]

            [File
                RelativePath=".\targetver.h"
                ]

            [/File]

            [File
                RelativePath=".\ttsmfc.h"
                ]

            [/File]

            [File
                RelativePath=".\ttsmfcDoc.h"
                ]

            [/File]

            [File
                RelativePath=".\ttsmfcView.h"
                ]

            [/File]

            [File
                RelativePath=".\type.h"
                ]

            [/File]

            [File
                RelativePath=".\vegView.h"
                ]

            [/File]

        [/Filter]

        [Filter
            Name="Fichiers de ressources"
            Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
            UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
            ]

            [File
                RelativePath=".\res\Toolbar.bmp"
                ]

            [/File]

            [File
                RelativePath=".\res\ttsmfc.ico"
                ]

            [/File]

            [File
                RelativePath=".\ttsmfc.rc"
                ]

            [/File]

            [File
                RelativePath=".\res\ttsmfc.rc2"
                ]

            [/File]

            [File
                RelativePath=".\res\ttsmfcDoc.ico"
                ]

            [/File]

        [/Filter]

        [File
            RelativePath=".\ReadMe.txt"
            ]

        [/File]

    [/Files]

    [Globals]

        [Global
            Name="RESOURCE_FILE"
            Value="ttsmfc.rc"
        /]

    [/Globals]

[/VisualStudioProject]

这些信息似乎涉及vc2008,而对于更近期的Visual Studio版本来说,这已经相当过时了。 - user1741137

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接