vs2008解决方案项目依赖问题

Garfield 2010-11-24 01:21:35
我有一个解决方案,里面有一个公共库prj: prj-lib,两个其他exe prj-A和prj-B
其中prj-lib有 Debug、Release、StaticDebug、StaticRelease 四种配置
分别生成调试版、发行版的dll和调试版、发行版的静态lib

然后
prj-A依赖于prj-lib的dll
prj-B依赖于prj-lib的静态lib

问题:
解决方案配置每个工程只能选其中一个配置
因此prj-lib只能编译其中一个配置

怎样才能一次性编译好这个sln,包括下面的配置:

prj-lib: Release
prj-lib: StaticRelease
prj-A: Release
prj-B: Release

因为是打算用devenv命令行一条命令完成,所以【菜单-》批生成】不是我要的答案。谢谢
...全文
483 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyx100 2010-11-25
  • 打赏
  • 举报
回复
makefile可以

要不你在创建一个prj-lib的副本,来编译StaticRelease
Garfield 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 chehw 的回复:]

使用预处理命令来指定lib
C/C++ code

#ifdef PRJLIB_DLLLIB
#pragma comment(lib, "dlllib")
#endif

#ifdef PRJLIB_STATICLIB
#pragma comment(lib, "staticlib")
#endif




然后分别在对应的版本中定义 PRJLIB_DLLLIB 和 PRJLIB_STA……
[/Quote]

答非所问了
Garfield 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tubo_true 的回复:]

引用 5 楼 garfield 的回复:

引用 3 楼 tubo_true 的回复:

makefile可以

要不你在创建一个prj-lib的副本,来编译StaticRelease


现在我就是用mingw的makefile+msbuild来编译的,但是想改进下
创建vcproj副本是想过的方法之一,就怕以后维护比较麻烦,团队其他人可能会增删文件



版本管理……
[/Quote]

意思是在linux下做.vcproj的soft link,然后在windows里面co出两份,commit修改一份,下次up的时候连副本也会up ?
tubo_true 2010-11-24
  • 打赏
  • 举报
回复
Msys/mingw
make -f file1 file1指一个当前目录的makefile

ms
nmake 这个需要看看msdn了,或google
tubo_true 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 garfield 的回复:]

引用 3 楼 tubo_true 的回复:

makefile可以

要不你在创建一个prj-lib的副本,来编译StaticRelease


现在我就是用mingw的makefile+msbuild来编译的,但是想改进下
创建vcproj副本是想过的方法之一,就怕以后维护比较麻烦,团队其他人可能会增删文件
[/Quote]


版本管理 svn 把完整正确的上传到服务器
check out 出来两个,但是都对应服务器上的一个
随便改了哪个,改的commit 没改的 update 这样就同步了

谁用的话,直接用svn上的那个 check out 出来就行了

Garfield 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xianglitian 的回复:]

微软的编译器一直都是支持命令行控制的
你可以自己写一个dat来实现需求
关于这方面的介绍网上也有很多资料
比如http://www.newsmth.net/bbsanc.php?path=%2Fgroups%2Fcomp.faq%2FCPlusPlus%2Fcompiler%2Fvisualc%2FM.1066555202.00
[/Quote]

我知道支持命令行控制,只是问下有没有方法能实现我现在这个需求:

在一个solution里面一次生成一个dll工程的动态库形式和静态库形式。

如果命令行支持批生成的话最好,不支持的话只能自己逐个指定工程&配置来编译,显然这不是最好的办法。
Garfield 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tubo_true 的回复:]

makefile可以

要不你在创建一个prj-lib的副本,来编译StaticRelease
[/Quote]

现在我就是用mingw的makefile+msbuild来编译的,但是想改进下
创建vcproj副本是想过的方法之一,就怕以后维护比较麻烦,团队其他人可能会增删文件
向立天 2010-11-24
  • 打赏
  • 举报
回复
微软的编译器一直都是支持命令行控制的
你可以自己写一个dat来实现需求
关于这方面的介绍网上也有很多资料
比如http://www.newsmth.net/bbsanc.php?path=%2Fgroups%2Fcomp.faq%2FCPlusPlus%2Fcompiler%2Fvisualc%2FM.1066555202.00
tubo_true 2010-11-24
  • 打赏
  • 举报
回复
makefile可以

要不你在创建一个prj-lib的副本,来编译StaticRelease
Garfield 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ouyh12345 的回复:]

prj-lib: Release
prj-lib: StaticRelease

一次能对一个工程做2次编译?
[/Quote]

不能所以才问有什么好办法。
可惜vs2008本身不支持 prj-A release依赖prj-lib release,prj-b依赖prj-lib static release.
ouyh12345 2010-11-24
  • 打赏
  • 举报
回复
prj-lib: Release
prj-lib: StaticRelease

一次能对一个工程做2次编译?
灿烂李 2010-11-24
  • 打赏
  • 举报
回复
prj-lib: Release
prj-lib: StaticRelease 生成文件名 区别开
灿烂李 2010-11-24
  • 打赏
  • 举报
回复
prj-lib: Release
prj-lib: StaticRelease
prj-A: Release
prj-B: Release

把A和B 也设置成依赖
chehw 2010-11-24
  • 打赏
  • 举报
回复
使用预处理命令来指定lib

#ifdef PRJLIB_DLLLIB
#pragma comment(lib, "dlllib")
#endif

#ifdef PRJLIB_STATICLIB
#pragma comment(lib, "staticlib")
#endif



然后分别在对应的版本中定义 PRJLIB_DLLLIB 和 PRJLIB_STATICLIB
Garfield 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 tubo_true 的回复:]

commit 是本地提交服务器
update 是服务器到本地

副本放在另外一个文件夹下
如果在副本文件夹下空白地方右键点update,只会更新副本
正本放在另一个文件夹



随便改了哪个,改的commit 没改的 update 这样就同步了
[/Quote]

co两份也不是最好的办法,每次部署编译环境会累的够呛的
不过你的回答倒是启发了我一个新想法,我迟些试一下
VC_ZSY 2010-11-24
  • 打赏
  • 举报
回复
发错地方了~~嘎嘎
VC_ZSY 2010-11-24
  • 打赏
  • 举报
回复
智能指针就是对一个指针做了一个封装,里面有对该指针的引用计数,并且重载了->,通过智能指针调用就等同于指针本身调用,当引用计数为0的时候就delete该对象。
tubo_true 2010-11-24
  • 打赏
  • 举报
回复
commit 是本地提交服务器
update 是服务器到本地

副本放在另外一个文件夹下
如果在副本文件夹下空白地方右键点update,只会更新副本
正本放在另一个文件夹



随便改了哪个,改的commit 没改的 update 这样就同步了

16,467

社区成员

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

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

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