小编uml*_*ute的帖子

具有多个同名源文件的VisualStudio项目?

我有一个大的C++项目,源文件组织在多个文件夹中(在文件系统上).

在其中两个文件夹中,我有相同名称的文件.例如

\MyProject\foo\Blurp.cpp
\MyProject\foo\File.cpp
\MyProject\bar\File.cpp
\MyProject\bar\Knoll.cpp
Run Code Online (Sandbox Code Playgroud)

该项目是跨平台的,我在linux和OSX上使用autoconf,但必须在W32上使用MSVC(由于我在W32上使用的一些第三方C++库和C++二进制接口在编译器之间不兼容)

在MSVC方面,项目也被组织成多个"过滤器"(那些虚拟文件夹)(名称大致对应于文件所在的目录),所以我可以区分它们.

现在问题是,当我构建项目时,MSVC将目标文件放在一个单独的平面中,我最终得到:

\MyProject\Release\Blurp.obj
\MyProject\Release\File.obj
\MyProject\Release\Knoll.obj
Run Code Online (Sandbox Code Playgroud)

可以看出,只有一个File.obj,所以缺少一个二进制对象.显然,链接器会抱怨,因为它找不到那个缺少的对象文件中定义的类/函数/ ...

有没有办法告诉MSVC创建具有唯一名称的目标文件,具体取决于这些文件所在的目录(或过滤器)?

我想象的是:

\MyProject\Release\foo\Blurp.obj
\MyProject\Release\foo\File.obj
\MyProject\Release\bar\File.obj
\MyProject\Release\bar\Knoll.obj
Run Code Online (Sandbox Code Playgroud)

要么

\MyProject\Release\foo-Blurp.obj
...
Run Code Online (Sandbox Code Playgroud)

管他呢.我所知道的所有其他构建系统(CMake,autotools)都能够处理多个同名文件.

这个问题类似于3729515,但我现在仍然坚持VS2008.(针对VS2008建议的解决方案 - 为每个有问题的文件设置对象目录 - 这在理论上确实有效,但出于实际原因我想避免这种情况)

filenames visual-studio-2008 visual-c++

10
推荐指数
2
解决办法
7217
查看次数

复杂的测试,以检查哪个对象实例化一个函数调用

我有一个struct(可以是class),并在另一个类中定义,如图所示

struct A{
somedata_A;
somespecificimplementation_A(someclass *S1);
};

class someclass{
somedata_someclass;
A a;
};

main(){
 someclass c1, *c2;
 c2 = &c1;
 c1.a.somespecificimplementation_A(c2);
}
Run Code Online (Sandbox Code Playgroud)

如何验证c2确实是c1的参考?请原谅我提出这个例子,因为很明显c2是c1的参考.

更新:A不存储指向某类的指针

c++

9
推荐指数
1
解决办法
159
查看次数

git-svn clone ignore-paths文件夹的正则表达式

我试图做一个git-svn克隆将SVN中的所有文件导入GIT.给出的命令就是这个;

git svn clone --stdlayout --ignore-paths='(/cache|/tmps|/file/conf/setting.xml)' --authors-file=../authors.txt file:///svnFolder/local-repos/PRG PRG.git
Run Code Online (Sandbox Code Playgroud)

上面的克隆但问题是它忽略了所有具有缓存和tmps的文件和文件夹.比如它甚至忽略了这些

new/folder/cache
meta/files/sets/tmps.html
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我设置正则表达式,在忽略路径中忽略根文件夹的缓存和tmps目录中的文件和子目录.

regex git ignore git-svn

8
推荐指数
1
解决办法
1万
查看次数

./configure && make install失败

早安我正在安装RabbitMQ库时发现了一个问题:

autoreconf -i && ./configure && make && sudo make install
Run Code Online (Sandbox Code Playgroud)

但是./configure停在这个位置:

checking for gcc option to accept ISO C99... -std=gnu99
./configure: line 11104: syntax error near unexpected token `0.17'
./configure: line 11104: `PKG_PROG_PKG_CONFIG(0.17)'
Run Code Online (Sandbox Code Playgroud)

linux pkg-config autotools configure rabbitmq

8
推荐指数
1
解决办法
5834
查看次数

如何使“制作”附加额外的标准标志

我有一个 Makefile(实际上不在我的控制之下),它定义了一些隐式规则使用的变量:

CPPFLAGS := $(CPPFLAGS) -I../../../../modules
CXXFLAGS += -std=c++11
Run Code Online (Sandbox Code Playgroud)

现在,我想为这些变量添加一些额外的标志作为make variables。就像是:

 make CPPFLAGS="-D_FORTIFY_SOURCE=2" CXXFLAGS="-g -O2"
Run Code Online (Sandbox Code Playgroud)

不幸的是这导致了覆盖整个CPPFLAGS CXXLAGS在Makefile中定义的,而我想他们积累/(其实我想追加外部设置标志,即使上面的代码显然试图前插

无论出于何种原因,将这些变量指定为环境变量(而不是make variables)都有效:

 CPPFLAGS="-D_FORTIFY_SOURCE=2" CXXFLAGS="-g -O2" make
Run Code Online (Sandbox Code Playgroud)

现在由于外部原因,我很难通过 envvars 传递这些标志(而是需要make vars)。

那么添加隐式规则使用的编译器标志的正确方法是什么?无论覆盖 积累变量打我作为Makefile文件的共同任务; 还有必须有某种方式来做到这一点...我已经搜查了补充文件,但没有发现任何东西!

一个简单的方法显然是引入一些辅助变量:

 CXXFLAGS = -std=c++11 $(EXTRA_CXXFLAGS)
Run Code Online (Sandbox Code Playgroud)

然后从外部设置这个辅助变量:

 make EXTRA_CXXFLAGS="-g -O2"
Run Code Online (Sandbox Code Playgroud)

但是:这种辅助变量有标准名称吗?(如果是,哪个?记录在哪里??)更好的是,是否还有其他变量会自动添加到隐式规则中(因此我不必手动附加 FLAGS?)

为什么我的原始 Makefile 中用于累积变量的两种变体仅适用于 envvars 而不适用于 make vars 的原因是什么?

makefile gnu-make

8
推荐指数
1
解决办法
4513
查看次数

Git:减少`.git/lfs/`的大小

我使用 git-lfs 来跟踪大文件,设置是:

.
??? ...
??? ...
??? large-files
??? ...
??? ...
??? .git
Run Code Online (Sandbox Code Playgroud)

外部存储安装在 上large-files,所有大文件都放在这里。

这个设置的问题是,有一个.git/lfs目录,它使用与 相同数量的磁盘空间large-files,因为我永远不会从 中删除large-files,而我的 SSD(工作树所在的位置)的容量小于外部存储,.git/lfs将超过我的SSD的容量。

有没有办法在.git/lfs不将其移动到外部存储的情况下减小它的大小?(将.git或整个工作树放到外部存储不是一种选择,因为外部存储并不总是可用的)

git git-lfs

8
推荐指数
1
解决办法
3548
查看次数

将新数据源添加到现有RRD

我有几百个rrds,我想为所有这些rrds添加5个额外的数据源.

  1. 这样做是否可取
  2. 什么是最好的方式和最快的方式

- 索恩 -

David OBrien在邮件列表中回复

在搜索档案(你应该先做的)和谷歌搜索后,我发现有几个人使用这个......

与perl.安装RRD:简单

#!/usr/local/bin/perl 

use strict; 
use RRD::Simple (); 

my $rrd = RRD::Simple->new(); 
my $rrdfile=$ARGV[0]; 
my $source=$ARGV[1]; 
my $type=$ARGV[2]; 
chomp($type); 
$rrd->add_source($rrdfile, $source => $type); 
Run Code Online (Sandbox Code Playgroud)

用法:

./addSource.pl file.rrd ds GAUGE 
Run Code Online (Sandbox Code Playgroud)

或者不管是什么类型..

请享用.

rrdtool rrd

7
推荐指数
1
解决办法
9775
查看次数

使用gstreamer组合音频和视频流

我正在使用gstreamer通过RTP流将mp4(mpeg-4)文件从一个设备传输到另一个设备.基本上我将mp4文件拆分为其音频和视频文件,然后将其全部发送到其他设备进行流式处理.现在,我想将mp4文件保存到另一台设备的磁盘上,但我的问题是我可以单独保存音频和视频文件而无法单独播放.

我很困惑如何结合音频和视频rtp流来形成我的mp4文件并将其保存到其他设备中的文件.

以下是命令行代码:

发件人(服务器)

gst-launch-0.10 -v filesrc location=/home/kuber/Desktop/sample.mp4 \
             ! qtdemux name=d \
             ! queue \
             ! rtpmp4vpay \
             ! udpsink port=5000 \
             d. \
             ! queue \
             ! rtpmp4gpay \
             ! udpsink port=5002
Run Code Online (Sandbox Code Playgroud)

Reciever(客户端)

gst-launch-0.10 udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)243, config=(string)000001b0f3000001b50ee040c0cf0000010000000120008440fa282fa0f0a21f, payload=(int)96, ssrc=(uint)4291479415, clock-base=(uint)4002140493, seqnum-base=(uint)57180" \
             ! rtpmp4vdepay \
             ! ffdec_mpeg4 \
             ! xvimagesink sync=false \
             udpsrc port=5002 caps="application/x-rtp, media=(string)audio, clock-rate=(int)32000, encoding-name=(string)MPEG4-GENERIC, encoding-params=(string)2, streamtype=(string)5, profile-level-id=(string)2, mode=(string)AAC-hbr, config=(string)1290, sizelength=(string)13, indexlength=(string)3, indexdeltalength=(string)3, payload=(int)96, ssrc=(uint)501975200, clock-base=(uint)4248495069, seqnum-base=(uint)37039"\
             ! …
Run Code Online (Sandbox Code Playgroud)

streaming rtp video-streaming gstreamer audio-video-sync

7
推荐指数
1
解决办法
5123
查看次数

如何使用gpg中的私钥加密文件

我正在为某些系统生成更新,我想加密更新以保持我的签名的机密性,完整性和有效性.我想用我的私钥加密文件并将它们发送到我的客户端,以便他们可以使用我的公钥解密它.但GPG的工作方式是使用public进行加密,使用private进行解密.我不想发送我的私钥,以便我可以更改它并将公钥发送给其他任何人.知道如何做到这一点???

linux encryption gnupg public-key-encryption private-key

7
推荐指数
2
解决办法
1万
查看次数

如何在Linux UVC Driver中启用UVC_QUIRK_FIX_BANDWIDTH怪癖?

我目前正在尝试在Wandboard主板上运行2个网络摄像头,这些主板必须共享USB集线器.问题是,当前的驱动程序实现(仅限YUV)使USB集线器饱和,最后我只能连接一个摄像头.

然而,UVC驱动实现有此怪癖样的情况,等等.

问题是,我没有找到任何关于如何加载这些怪癖的文档.你可以帮助我吗?

linux v4l2 uvc

7
推荐指数
2
解决办法
9347
查看次数