CMake教程10:编写CMake中遇到的问题

518 阅读1分钟

Policy CMP0115 is not set: Source file extensions must be explicit.

在添加源文件的时候,没有写明文件的后缀名,所以才触发的这个警告,补全文件扩展名就行了

error C2039: 'ptr_fun': is not a member of 'std'

cocos/base/CCConsole.cpp

std::string& Console::Utility::rtrim(std::string& s) {
    s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end());
    return s;
}

原因:std::ptr_fun在C ++ 11中已弃用,在C ++ 17中将被完全删除。

解决办法:CMakeLists.txt设置C++11即可

set(CMAKE_CXX_STANDARD 11)

no template named 'list' in namespace 'std'

一直在这个错误上排查,怎么看都没有问题 image.png

image.png 其实这里就是没有问题,这个错误之前还有一个错误:

no template named 'list' in namespace 'std'

造成这个错误的原因是使用了std::list,但是头文件却没有引入include <list> 加一下就好了