我CMake
用来生成unix makefile。之后,我使用make
实用程序编译项目。问题是我看不到任何警告!例如,这会导致没有警告的干净构建:
#include <iostream>
class Foo
{
int first;
int second;
public:
Foo(int a, int b)
: second(a) // invalid initialization order
, first(b)
{
}
};
int main(int argc, char** argv)
{
int unused; // unused variable
int x;
double y = 3.14159;
x = y; // invalid cast
Foo foo(1,2);
std::cout << y << std::endl;
return 0;
}
未使用的变量和有损变量强制转换 - 没有警告!我的CMakeLists.txt
文件很简约:
cmake_minimum_required(VERSION 2.8)
add_executable(main main.cpp)
当我运行时cmake
,make
我的输出如下所示:
[100%] Building CXX object CMakeFiles/main.dir/main.cpp.o
Linking CXX executable main
[100%] Built target main
但是当我添加这行代码时:
#warning ("Custom warning")
结果输出包含警告:
[100%] Building CXX object CMakeFiles/main.dir/main.cpp.o
../src/main.cpp:15:2: warning: #warning ("Custom Warning") [-Wcpp]
Linking CXX executable main
[100%] Built target main
我使用 Ubuntu 12.04 LTS 和 GCC 作为编译器。也许 CMake 将一些标志传递给编译器,导致没有警告。我怎样才能检查它?我无法读取 CMake 生成的 makefile,它们有点神秘。