我有以下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 .在我的第一级运行.
这样的事情有可能吗?
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 …
我对这个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)
我以为默认构造函数会自动调用?为什么我必须明确地使用他?