小编Hun*_*unk的帖子

CMake在不同的构建目录中构建多个目标

我有以下CMake结构:

CMakelists.txt
toolchain.cmake
folder1
   ----CMakelists.txt
folder2
   ----CMakelists.txt
etc..
Run Code Online (Sandbox Code Playgroud)

我的第一级CMakelists.txt文件包含其他子目录.现在我想为不同的目标构建我的代码.

手动方式是:

1.
    mkdir hostBuild
    cd hostBuild
    cmake ..
    make

2.
    mkdir crossBuild
    cd crossBuild
    cmake .. --DCMAKE_TOOLCHAIN_FILE=toolchain.cmake
    make
Run Code Online (Sandbox Code Playgroud)

这个过程可以自动运行吗?

例如,我只需要cmake .在我的第一级运行.

这样的事情有可能吗?

c++ cmake

6
推荐指数
1
解决办法
2358
查看次数

重载运算符<< Boost Log

inline std::ostream& operator<<(std::ostream& p, const std::vector<unsigned int>& vector){
  p << "[ ";
  for(auto i:vector){
    p << " "<< i << " ,";
  }
  p<< "]";
  return p;
}

#define LOG_DEBUG_MESSAGE BOOST_LOG_SEV(my_logger::get(), debug)


std::vector<unsigned int> test {1, 2, 3};
LOG_DEBUG_MESSAGE << "test "<< test;
std::cout << test  << std::endl;
Run Code Online (Sandbox Code Playgroud)

你好,

我重载了我的运算符<< for std :: vector.当我使用std :: cout它运行良好,但有了升压日志我得到以下错误:

boost/log/utility/formatting_ostream.hpp:710:19:错误:无法将'boost :: log :: v2_mt_posix :: basic_formatting_ostream :: ostream_type {aka std :: basic_ostream}'左值绑定到'std :: basic_ostream &&'strm. stream()<< value;

/opt/gcc.4.9.1/include/c++/4.9.1/ostream:602:5:注意:初始化'std :: basic_ostream <_CharT,_Traits>&std :: operator …

c++ boost stl c++11

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

GCC -Weffc ++警告

我对这个Weffc++警告有一个理解问题.

main.cpp:在构造函数'B :: B()'中:main.cpp:13:1:警告:'B :: a'应该在成员初始化列表中初始化[-Weffc ++] B(){} ^

#include <iostream>

class A
{
public:
   A() {}
   ~A() {}
   void test() { std::cout << "Hello world\n"; }
};

class B
{
public:
   B() {}
   ~B() {}
   A a;
};

int main()
{ 
   B b;
   b.a.test();
   return 1;
}
Run Code Online (Sandbox Code Playgroud)

如果我写或使用初始化列表我没有问题.

A a = {};
Run Code Online (Sandbox Code Playgroud)

我以为默认构造函数会自动调用?为什么我必须明确地使用他?

c++ gcc

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

标签 统计

c++ ×3

boost ×1

c++11 ×1

cmake ×1

gcc ×1

stl ×1