小编Car*_*iro的帖子

如何在syntastic vim插件中添加c ++ 11支持?

我在我的c ++ 11项目中使用了syntastic.当我在vim中编辑,并保存(:w)时,syntastic插件会在每个初始化列表{}和每个循环上给出错误,这些循环显然是缺少的c ++ 11特性.

我用病原体安装了合成器.

以下是我在初始化列表和每个循环上获得的错误的两个示例(c ++ 11编译正常):

初始化列表上的错误 每个循环的错误

vim c++11 syntastic

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

如何从Jenkins的建筑中排除git分支

这是我目前为项目设置的Jenkins:

  • 一个工作运行所有开发分支
  • 一个作业运行所有拉请求
  • 一个作业运行分支
  • 一个作业仅在主要通过时才进行自动发布

这种设置使我可以在开发过程中持续自动交付以及持续反馈.前3个工作也运行所有测试和覆盖报告.

问题是我找不到从"所有开发分支"工作中排除主分支的方法.每次合并一个pull-request时,它都会不必要地构建master两次.

有谁知道如何从詹金斯的工作中排除一个分支?

ps:我正在使用Git和Github插件.我的项目存储在Github上.

git jenkins

39
推荐指数
3
解决办法
2万
查看次数

在MacOS X中使用c ++ 11并编译Boost库的难题

我正在尝试编译一个广泛使用c ++ 11标准的c ++项目.只用-std = c ++ 11,一切都很顺利,直到我尝试使用unordered_map而MacOS在usr/include中的任何地方都没有unordered_map头文件.

我做了一些研究,发现使用-stdlib = libc ++会修复它(不知道如何,如果包含文件在文件系统中没有任何地方,这对我来说似乎很神奇).它确实做到了.编译得很好,但链接器无法链接到我的程序也广泛使用的boost :: program_options.没有-stdlib = libc ++,可以完美地提升链接,但是我失去了unordered_map.

我应该怎么做才能拥有Mac OS clang ++编译器的最新C++ 11功能,并且仍然可以链接到boost库(这是从这个mac上的源代码构建的)

ps:在我的arch linux框中一切正常

我的makefile:

LIBS = -lboost_program_options CXXFLAGS = -stdlib = libc ++ -std = c ++ 11 -Wall -g OBJ = fastq.o fastq_reader.o main.o degenerate.o interleave.o complement.o interval_utils.o interval.o interval_utils_test_tool.o

foghorn:$(OBJ)$(LINK.cc)-o $ @ $ ^ $(LIBS)

输出使用-stdlib = libc ++

$ make c ++ -stdlib = libc ++ -std = c ++ 11 -Wall -g -c -o fastq.o …

c++ macos boost c++11

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

clang 3.5中不支持-finline-functions?

我正在使用他们分发的clang 3.5.我正在使用以下命令行在我的travis vm中安装它:

sudo apt-add-repository 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise-3.5 main'
sudo apt-add-repository 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise-3.5 main'
Run Code Online (Sandbox Code Playgroud)

当我在启用优化的情况下运行我的测试版本时,我收到此错误:

clang: error: optimization flag '-finline-functions' is not supported
  "clang++" -c -x c++ -std=c++1y -Werror -O3 -finline-functions -Wno-inline -Wall -Werror -pthread -fPIC -std=c++1y -DBOOST_ALL_DYN_LINK -DNDEBUG -I"." -I"gamgee" -I"lib/htslib" -o "test/bin/run.test/clang-linux-3.5.0/release/threading-multi/sam_builder_test.o" "test/sam_builder_test.cpp"
Run Code Online (Sandbox Code Playgroud)

我在我的mac上运行较旧的3.4版本的clang时没有得到相同的错误.

clang是否削减了对3.5中的-finline-functions的支持?这是关于这个包构建的具体内容吗?如何用clang-3.5 +替换-finline-functions选项来优化构建?

c++ inline clang c++11

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

Jenkins github pull请求构建器插件未发布到github

我已经配置了Jenkins Github Pull-Request构建器插件来构建我所在机构成员提出的每个请求.它就像一个魅力.

但是,构建不会将构建状态报告回github,就像它在这篇不错的帖子中所显示的那样.我还尝试选中"在更新提交状态失败时使用注释来报告结果"复选框,但我仍然无法回复github.

我在GitHub上创建了一个bot用户,并赋予它对repo的推送和管理权限.

我的Jenkins服务器位于防火墙之后,但由于它正常构建并检测到github repo的变化(通过轮询),我认为这不是问题.

其他人有这个问题吗?你是怎么解决的?

这是我的控制台输出的转储(为了便于阅读而压缩)

Started by an SCM change
Building in workspace 
Fetching changes from the remote Git repository
Fetching upstream changes from repo
Seen branch in repository origin/HEAD
Seen branch in repository origin/master
Seen branch in repository origin/pr/1/head
Seen branch in repository origin/pr/1/merge
Seen branch in repository origin/pr/10/head
[…]
Seen branch in repository origin/pr/9/head
Seen branch in repository origin/pr/9/merge
Seen 33 remote branches
Checking out Revision 9b4d45ee3a2d265a1268c2931e7b2bcb738e1c87 (origin/pr/16/merge)
First time build. Skipping …
Run Code Online (Sandbox Code Playgroud)

github pull-request jenkins jenkins-plugins

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

如何分发依赖于其他库的 C++ 库

做这个的最好方式是什么 ?

  1. 将依赖库作为 git 子模块添加到您的源代码中并使用您的源代码构建它们?
  2. 与 #1 相同,但不是 git submodules 将克隆和构建卸载到构建系统,就像这里描述的那样。
  3. 不要构建依赖项,只需列出它们并让库用户处理它的安装(静态或动态,但他感觉如何)。
  4. 将所有内容构建到一个巨大的静态库中,并将其完全隐藏在下游用户面前。
  5. 使用由其他语言(如 maven、ant、gradle、gem、pip)著名的依赖管理器之一。这些中的任何一个都可以很好地与 C++ 库配合使用吗?
  6. 更好的东西,我没有在这里考虑

我有一个合理的感觉,#4 是不可能的。

我一直在尝试使用 #1,但我已经遇到了 git 子模块的不便之处。

我觉得#2 与#1 相似,但略好于#1,但如果你这样做,你如何进行开发?您是在系统中安装依赖库还是将它们保存在源代码树中(但不在源代码管理中)以模拟构建环境?

很多问题,但希望有一个最终的答案。

c++ git dependencies software-distribution

7
推荐指数
0
解决办法
379
查看次数

c ++具有复杂赋值的构造函数初始值设定项列表

假设我想要一个接收一些参数的构造函数,并且使用这些参数我可以计算它的成员变量的值.除了成员变量的值不是参数的简单赋值.它们需要创建其他对象并转换值,然后才能将它们用作成员变量的值.

这是填充初始化列表的方法.由于无法创建变量并重复使用它们,因此您必须复制代码(并生成同一对象的多个副本)以适合初始化列表中的所有代码,因此效率也非常低.

另一个选项是不使用初始化列表并让默认构造函数被调用,然后用整齐的计算覆盖构造函数内的值.

现在如果该类没有默认构造函数怎么办?怎么能整齐地做到这一点?

/* a class without a default constructor */
class A {
  public:
    B x1
    B x2
    A(B x1_, B x2_) : x1{x1_}, x2{x2_} {};
};

/* a class that contains an A object and needs to initialize it based on some complex logic */
class C {
  public:
    A a;
    C(D d) :
      a{b1,b2} // ultimately I just want to initialize a with two B objects
               // but unfortunatelly they require a lot of work to …
Run Code Online (Sandbox Code Playgroud)

c++ constructor default-constructor

4
推荐指数
1
解决办法
2794
查看次数

为什么 Boost Log 记录器操作不是 const?

BOOST_LOG_SEV我正在尝试使用严重性通道记录器,但我遇到了不是 const 方法的问题- 我想是因为 open_record() 和 push_record()

这基本上会迫使我将类中的所有方法设置为非 const,因为它们想要写入记录器。我真的负担不起这样做——所以目前我只能使用全球记录器。

在我当前的实现中,每个类都有一个以类名作为通道的记录器(在其构造函数中初始化),并且它随时发出日志消息BOOST_LOG_SEV(this->logger, level)

我很想听听非 constness 背后的原因,以及我的设计是否不适合 Boost::Log。

c++ boost boost-log

3
推荐指数
1
解决办法
522
查看次数

为什么基于 c++ 范围的 for 循环在每次迭代时都调用析构函数?

我正在使用基于范围的 for 循环来使用迭代器读取(和解析)文件。我的循环看起来像这样:

for (auto record : reader) {
    if (even)
        record.reverse_complement();
    cout << record.write();
    even = !even;
} 
Run Code Online (Sandbox Code Playgroud)

我已经向迭代器的构造函数和析构函数添加了输出,看起来在 for 循环的每次迭代中,析构函数在 end() 返回的迭代器上被调用。

calling fq_iter FULL constructor 
calling fq_iter default constructor 
calling fq_iter destructor on 0
calling fq_iter destructor on 0
calling fq_iter destructor on 0
calling fq_iter destructor on 0
calling fq_iter destructor on 0
calling fq_iter destructor on 0
calling fq_iter destructor on 0
calling fq_reader destructor on 0
Run Code Online (Sandbox Code Playgroud)

这些是我用来解析和迭代文件的类,知道为什么每次迭代都调用析构函数吗?(除此之外,它会产生正确的输出)。

c++ foreach iterator destructor

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