现象:查看cmake产生的临时文件xxx/build/CMakeFiles/CMakeError.log文件可以发现,不论是CXX_FILESYSTEM_NO_LINK_NEEDED还是CXX_FILESYSTEM_STDCPPFS_NEEDED都是undefine std::filesystem......的错误,而第三次尝试CXX_FILESYSTEM_CPPFS_NEEDED也是报错,具体错误是什么不记得了。反正3种情况编译都没通过,自然是运行不了simple program的。
原因:上述现象的根本原因是boost安装没有安装在默认目录(没有/usr/local目录权限),而是用--prefix修改到了其他的目录,那么cmake就找不到boost了。
解决方法:修改opensycl根目录下的cmake/FindFilesystem.cmake文件,在尽量靠前的地方添加如下2行命令告诉cmake去哪里找boost的include和lib,其中XXXpath用自己安装boost时指定的--prefix路径替换。
- set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "/XXXpath/boost/include")
- set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "/XXXpath/boost/lib")
保存后,记得把build目录【清空】再重新cmake即可。
本文参考:
Could NOT find Boost (missing: filesystem system) (found version "x.xx.x") - 知乎 (zhihu.com)