我对终端的工作相当陌生,我正在尝试使用cmake为一个涉及公共交通路线的项目配置构建。当我尝试进行构建时,我在终端中得到了以下响应:
$ cmake ..
-- Could NOT find OpenMP_C (missing: OpenMP_C_FLAGS OpenMP_C_LIB_NAMES)
-- Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES)
-- Could NOT find OpenMP (missing: OpenMP_C_FOUND OpenMP_CXX_FOUND)
CMake Warning at CMakeLists.txt:33 (message):
Configuring without OpenMP!
CMake Error at src/CMakeLists.txt:13 (add_subdirectory):
The source directory
/Users/ericbush/Desktop/the-one/toolkit/gtfs/pfaedle/src/cppgtfs
does not contain a CMakeLists.txt file.
CMake Error at src/CMakeLists.txt:14 (add_subdirectory):
The source directory
/Users/ericbush/Desktop/the-one/toolkit/gtfs/pfaedle/src/configparser
does not contain a CMakeLists.txt file.
-- Configuring incomplete, errors occurred!
See also "/Users/ericbush/Desktop/the-one/toolkit/gtfs/pfaedle/build/CMakeFiles/CMakeOutput.log".
See also "/Users/ericbush/Desktop/the-one/toolkit/gtfs/pfaedle/build/CMakeFiles/CMakeError.log".下面是我认为是来自CMakeLists.txt文件的相关代码:
find_package(OpenMP)
if (OPENMP_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()
# set compiler flags, see http://stackoverflow.com/questions/7724569/debug-vs-release-in-cmake
if(OPENMP_FOUND)
set(CMAKE_CXX_FLAGS "-fopenmp -Ofast -fno-signed-zeros -fno-trapping-math -Wall -Wno-format-extra-args -Wextra -Wformat-nonliteral -Wformat-security -Wformat=2 -Wextra -Wno-implicit-fallthrough -pedantic")
else()
message(WARNING "Configuring without OpenMP!")
set(CMAKE_CXX_FLAGS "-Ofast -fno-signed-zeros -fno-trapping-math -Wall -Wno-format-extra-args -Wextra -Wformat-nonliteral -Wformat-security -Wformat=2 -Wextra -Wno-implicit-fallthrough -pedantic")
endif()
set(CMAKE_CXX_FLAGS_DEBUG "-Og -g -DLOGLEVEL=3 -DPFAEDLE_DBG=1")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS} -DLOGLEVEL=2")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -DLOGLEVEL=2")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} -g -DLOGLEVEL=3")我在这个和其他网站上发现了一些类似的问题,但我仍然在努力理解这个问题,因为我以前从未使用过cmake,而且,正如前面提到的,我对终端的工作有些陌生。我非常感谢任何关于错误消息实际告诉我的信息,或者任何关于我可以采取的步骤/我可以尝试解决问题的建议。我正在Mac上工作,如果有人想知道的话。
发布于 2020-02-09 20:08:43
为了让编译器看到OpenMP,您可能需要在cmake命令中设置以下选项(对于位于/opt/local中的依赖项):
cmake .. -DOpenMP_C_FLAGS=-fopenmp=lomp -DOpenMP_CXX_FLAGS=-fopenmp=lomp -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" -DOpenMP_libomp_LIBRARY="/opt/local/lib/libomp.dylib" -DOpenMP_CXX_FLAGS="-Xpreprocessor -fopenmp /opt/local/lib/libomp.dylib -I/opt/local/include" -DOpenMP_CXX_LIB_NAMES="libomp" -DOpenMP_C_FLAGS="-Xpreprocessor -fopenmp /opt/local/lib/libomp.dylib -I/opt/local/include"
缺少的两个CMakeLists.txt位于src/的git子模块中,要下载子模块,请使用cd将其下载到根phaedle目录,然后发出以下命令:
git submodule update --init --recursive编辑:这个问题现在在master中得到了修复。
https://stackoverflow.com/questions/60126203
复制相似问题