我有一个大的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建议的解决方案 - 为每个有问题的文件设置对象目录 - 这在理论上确实有效,但出于实际原因我想避免这种情况)
我有一个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不存储指向某类的指针
我试图做一个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目录中的文件和子目录.
早安我正在安装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) 我有一个 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 的原因是什么?
我使用 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或整个工作树放到外部存储不是一种选择,因为外部存储并不总是可用的)
我有几百个rrds,我想为所有这些rrds添加5个额外的数据源.
- 索恩 -
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)
或者不管是什么类型..
请享用.
我正在使用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) 我正在为某些系统生成更新,我想加密更新以保持我的签名的机密性,完整性和有效性.我想用我的私钥加密文件并将它们发送到我的客户端,以便他们可以使用我的公钥解密它.但GPG的工作方式是使用public进行加密,使用private进行解密.我不想发送我的私钥,以便我可以更改它并将公钥发送给其他任何人.知道如何做到这一点???