在Visual Studio 2008中的源代码中指定已编译二进制文件(* .exe)的名称

时间:2009-10-15 20:33:39

标签: c++ visual-studio

来自这个帖子

http://www.codeguru.com/forum/showthread.php?p=1863547

似乎无法通过以下方式完成:

#pragma comment(linker, "/out:mycool.exe")

是否有一些简单的方法可以在不使用项目设置,制作文件等的情况下完成此操作?

添加了:

为什么我要这样做。 好吧,这进入另一个主题,这可能是我的下一个问题 - 使用IDE。 我必须在一个项目中提供许多示例。它们是简单的单个文件,演示了不同的处理方式,每个文件应该是不同的可执行文件EXample1.exe,Example2.exe。

我只想粘贴源代码或者将一个SINGLE文件交给制作示例可执行文件所需的一切(例如在Web论坛上。我不想附加一个3.6MB的项目文件夹只是为了得到一个不同的可执行文件名字!

3 个答案:

答案 0 :(得分:4)

编译超越源代码。源代码只存在,并且必须采取一些东西并制作它。你在源代码中做的任何事情都只是对编译器的指令。您也可以使用项目设置。这个东西不是标准的,因为标准只涵盖源代码的行为和定义,而不是编译器。

g ++将输出文件作为参数:g++ -o myexe.exe main.cpp。如果碰到“输出应该是这个!”它该怎么办?源代码中的指令?

与cl(Visual Studio)相同,它将输出设置传递到命令行。

不是说这是不可能的,但我怀疑尝试提出一种方法是值得的,更不用说让它成为标准。

答案 1 :(得分:1)

要使用链接器编译指示注释,不得在项目属性的链接器部分中指定输出文件:

项目 - >属性 - >链接器 - >一般 - >输出文件

删除条目:$(OutDir)\ $(ProjectName).exe

然后,prama声明将起作用:

pragma comment(链接器,“/ out:mycool.exe”)

感谢JC的演练

无法指定完整路径

http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/11a06ecd-dcca-4d81-8626-ba0c5a1835c1/

但是解决方法是:

我所做的是在库文件附近放置一个头文件,这个头文件将包含编译指示行。

pragma comment(lib, FILE “../ libs / mylibary.lib”)

如果 FILE 是“C:\ Project \ SharedLibs \ Xvid \ latest.h” 然后pragma将包括 “C:\ Project \ SharedLibs \ Xvid \ libs / mylibary.lib”一旦将uri规范化以删除..的

这将始终使pragma包含具有从附带标题的路径创建的绝对路径的库。

我使用这个系统在项目中包含一个标题,无论lib和项目之间的相对路径如何,lib都将被包含在内。

添加了:

只要是8.3格式,就可以指定完整路径。这可能会给路径带来问题:

C:\ Program Files \ Abyss Web Server \ htdocs \

程序文件通常是Progra~1 但是带空格的文件夹名称更棘手。在这种情况下,它变成了AbyssW~1 \必须转义\导致\生成一个工作实用程序:

#pragma comment(linker, "/out:C:\\Progra~1\\AbyssW~1\\htdocs\\MyApp.exe") 

正如kibibu所示:

#pragma comment(linker, "/out:\"C:\\Program Files\\Abyss Web Server\\htdocs\\MyApp.exe\"") 

也有效

答案 2 :(得分:0)

如果您不想偏离Visual C ++安装库存太远,则应考虑使用NMake。它可以使用项目文件与IDE集成,但也可以很容易地从命令行运行。它还比用于生成任意数量的简单和类似可执行文件的项目文件轻得多。