VS2012下,如何设置项目,以让编译出的目标文件保持文件路径?

C语言 码拜 9年前 (2015-05-11) 1063次浏览 0个评论

如题,有个项目,里面有很多个源文件,这些源文件,有若干个源文件的文件名相同,但在不同的目录下,例如:
src/thread/win32.c
src/video/win32.c
src/sound/win32.c
src/input/mouse/win32.c
src/input/keyboard/win32.c
但用VS2012进行编译,它会把所有已编译的obj文件放在同一目录下,像这样:
Release/win32.obj
Release/win32.obj
Release/win32.obj
Release/win32.obj
Release/win32.obj
这会导致出现警告:warning LNK4042: 对象被多次指定;已忽略多余的指定
而编译出的静态库 里就没有其他win32.c里的函数了。

请问,可不可以通过设置,让VS2012编译出的obj文件保持和源文件一样的路径?例如:
Release/thread/win32.obj
Release/video/win32.obj
Release/sound/win32.obj
Release/input/mouse/win32.obj
Release/input/keyboard/win32.obj
或者,加个前缀名也行:
Release/thread_win32.obj
Release/video_win32.obj
Release/sound_win32.obj
Release/input_mouse_win32.obj
Release/input_keyboard_win32.obj
反正只要解决问题就行。

另外,编译出的静态库的体积,比 编译出的动态库的体积大很多,静态库10MB左右,而动态库才几百KB。

昨天百度搜索关于这静态库和动态库的问题,搜索到CSDN上,回帖者都把提问者的问题当成:静态链接的可执行文件 的体积 比 动态链接的可执行文件的体积 大。本人顿时无语。

还有,我在“头文件”“源文件”下,添加了文件,搞成和源码目录一样的目录结构,也就是把“筛选器”当成“文件夹”,添加进去,再把文件添加进“文件夹”里。
可是,打包项目源码及工程文件后,放到其他目录下解压,打开sln工程文件,结果,目录结构都没了,文件都放在根目录里。
请问,能不能让工程文件在转移所在目录后,依然保持项目文件的目录结构?
引用 1 楼 liuchao35758600 的回复:

还有,我在“头文件”“源文件”下,添加了文件,搞成和源码目录一样的目录结构,也就是把“筛选器”当成“文件夹”,添加进去,再把文件添加进“文件夹”里。
可是,打包项目源码及工程文件后,放到其他目录下解压,打开sln工程文件,结果,目录结构都没了,文件都放在根目录里。
请问,能不能让工程文件在转移所在目录后,依然保持项目文件的目录结构?

原来是忘记加了.vcxproj.filters后缀的文件。

30分
mv  src/thread/win32.c          src/thread/thread_win32.c
mv  src/video/win32.c           src/video/video_win32.c
mv  src/sound/win32.c           src/sound/sound_win32.c
mv  src/input/mouse/win32.c     src/input/mouse/mouse_win32.c
mv  src/input/keyboard/win32.c  src/input/keyboard/keyboard_win32.c
引用 3 楼 zhao4zhong1 的回复:

Plain Text code?12345mv  src/thread/win32.c          src/thread/thread_win32.cmv  src/video/win32.c           src/video/video_win32.cmv  src/sound/win32.c           src/sound/sound_win32.……

其实我想求除此以外的方法,没有的话,只好用这个了。

10分
名字后加个后缀不好吗?
配置属性->c/c++->输出文件->对象文件名=%(RootDir)%(Directory)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明VS2012下,如何设置项目,以让编译出的目标文件保持文件路径?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!