VS属性中的$(TargetName)和$(ProjectName)有何区别?

visionfans 2011-06-16 01:03:45
Visual Studio工程属性页中的, 有几个经常看到的macro.

我感到疑惑的是这两个:

$(TargetName)
$(ProjectName)


如图:



这两者往往是相同的, 好像在Visual Studio 2010中总是一样的.

It is by design in Visual Studio 2010 that $(ProjectName) and $(TargetName) is the same by default unless you change $(TargetName) explictly in the property page.[1]

在[2]中也提到这个问题, Microsoft的专家说, 因为难以通过解析Link.OutputFile, 所以, 默认保持了$(TargetName)和$(ProjectName)的一致性.

但是, 我想知道TargetName和ProjectName本质上有什么不一样.

在Visual Studio中, 目标(Target)名是指哪个? 工程(Project)名有是指哪个? 跟方案(Solution)名有何区别?

在哪里可以看到这些宏的定义呢?


[1] http://connect.microsoft.com/VisualStudio/feedback/details/506844/-targetname-becomes-equal-to-projectname-after-upgrading-from-a-vs2008-project-where-the-2-macros-are-assigned-different-values-causing-build-to-fail

[2] http://social.msdn.microsoft.com/Forums/en-MY/vcprerelease/thread/3c03e730-6a0e-4ee4-a0d6-6a5c3ce4343c
...全文
1638 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 visionfans 的回复:]

感谢楼上各位. akirya给的链接很到位, 找的就是是这个, 但是, 这个只有各个变量的解释, 这些宏是在哪里定义的呢?
[/Quote]
这些都是IDE定义的 ,某些是可修改的。
LuciferStar 2011-06-19
  • 打赏
  • 举报
回复
预置变量。根据当前项目的实际路径所决定。
visionfans 2011-06-19
  • 打赏
  • 举报
回复
感谢楼上各位. akirya给的链接很到位, 找的就是是这个, 但是, 这个只有各个变量的解释, 这些宏是在哪里定义的呢?
  • 打赏
  • 举报
回复
我按照oyljerry说的,做了修改,结果pdb的文件名字也改动了。
visionfans 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lisunlin0 的回复:]

选中选项的时候,可以点击选项后面的"..."来打开一个新窗口,里面有当前项目相关宏定义的展开值。

$(TargetName)应该是OutputFile里面的短文件名的主体部分,试手工指定OutputFile里面的文件名,然后再查看$(TargetName)展开后的值。
[/Quote]

[Quote=引用 2 楼 oyljerry 的回复:]

$(TargetName) 会跟你OutputFile中的改动而改动,如果你不修改,用默认的工程名,那么两者可能相同,如果你想指定生成的Binary文件名,那么$(TargetName)就会跟着变化.
[/Quote]

我的环境是Visual Studio 2008.

@ lisunlin0 :
经测试, 改变OutputFile的目标文件名, $(TargetName)是不改变的. 你说的"..."在哪里呢?

@ oyljerry :
你经过测试了吗.

测试过程:




感觉这个东西是预先就定义好的, 不知道在哪里改这个东西.
kyotrue 2011-06-16
  • 打赏
  • 举报
回复
一个是工程名,一个是最后生成出来的文件名
oyljerry 2011-06-16
  • 打赏
  • 举报
回复
$(TargetName) 会跟你OutputFile中的改动而改动,如果你不修改,用默认的工程名,那么两者可能相同,如果你想指定生成的Binary文件名,那么$(TargetName)就会跟着变化.
sunlin7 2011-06-16
  • 打赏
  • 举报
回复
选中选项的时候,可以点击选项后面的"..."来打开一个新窗口,里面有当前项目相关宏定义的展开值。

$(TargetName)应该是OutputFile里面的短文件名的主体部分,试手工指定OutputFile里面的文件名,然后再查看$(TargetName)展开后的值。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧