Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有没有办法告诉Visual Studio生成后事件,整个生成的输出可执行文件将来自子项目?_C++_Visual Studio 2012_Msbuild - Fatal编程技术网

C++ 有没有办法告诉Visual Studio生成后事件,整个生成的输出可执行文件将来自子项目?

C++ 有没有办法告诉Visual Studio生成后事件,整个生成的输出可执行文件将来自子项目?,c++,visual-studio-2012,msbuild,C++,Visual Studio 2012,Msbuild,我有一个应用程序,它使用公司代码库中的公共库。该公共库具有一些依赖项,这些依赖项需要与使用它的应用程序位于同一目录中 我的解决方案如下所示: \My solution \Common Project \Processing Library \Gui Application 每个项目都设置为内置到$(ProjectDir)\$(配置) 我在公共库中有一个生成后事件,它执行以下操作: copy "$(Boost)\stage\lib\boost_chrono*.dll" "$

我有一个应用程序,它使用公司代码库中的公共库。该公共库具有一些依赖项,这些依赖项需要与使用它的应用程序位于同一目录中

我的解决方案如下所示:

\My solution \Common Project \Processing Library \Gui Application 每个项目都设置为内置到
$(ProjectDir)\$(配置)

我在公共库中有一个生成后事件,它执行以下操作:

copy "$(Boost)\stage\lib\boost_chrono*.dll" "$(TargetDir)"
…根据(我读到的)哪个应该将其放在当前主项目(即启动项目)的输出目录中

也许我读错了,但出于某种原因,无论我尝试什么,它总是将这些库复制到Processing Library输出目录中


我遗漏了什么?

我做了一些实验,虽然这似乎不太可能是正确的方法,但以下方法似乎确实有效;如果手动编辑解决方案文件并将所需的项目作为
目标
放在项目列表的顶部,则该项目就是
TargetDir
似乎引用的项目


以前,我的处理项目位于列表的顶部,但在更改了将我的GUI项目置于顶部的顺序后,boost.dll最终到达了我期望的位置。

添加后期生成事件的是哪个项目?它适用于当前项目,而不是启动项目。构建后事件位于公共库中,因此如果它包含在其他项目中,那么这些boost.dll将最终输出到这些项目中(或者至少我们希望这样)。“当前项目”是指公共项目吗?是的,是公共库项目。如果是这种情况,那么为什么它们最终会出现在处理库的输出区域?VS将命令放入批处理文件并运行它。您只需将源参数指定给命令copy,它就会复制到当前工作目录。我认为某些命令会改变当前的工作方向。要解决此问题,可以简单地提供目标路径。