cmake 报错undefined reference to 'std::logic_error::logic_error(char const*)'
时间: 2024-01-20 08:02:26 浏览: 59
这个错误通常意味着你没有将标准库链接到你的项目中。你可以尝试在CMakeLists.txt文件中添加以下内容:
```
set(CMAKE_CXX_STANDARD 11) # 设置C++标准为11或更高版本
find_package(Threads REQUIRED) # 寻找线程库
add_executable(your_project_name your_source_files.cpp)
target_link_libraries(your_project_name
PRIVATE Threads::Threads # 链接线程库
PRIVATE stdc++fs # 链接文件系统库
)
```
其中,`stdc++fs`是文件系统库,用于处理文件的操作。如果你的程序中没有使用到文件系统相关的操作,可以省略对该库的链接。
如果仍然出现类似的错误,请确保你的编译器和标准库版本兼容。
相关问题
cmake undefined reference to QtChartsLLQPieSeries::QPieseries(Object *)
这个错误一般是因为链接阶段缺少对QtCharts库的链接,你需要在CMakeLists.txt中添加以下语句:
```
find_package(Qt5Charts REQUIRED)
target_link_libraries(yourTargetName Qt5::Charts)
```
其中,yourTargetName是你的目标项目名称,记得替换成你自己的名称。另外,如果你使用的是Qt4,那么需要将Qt5改为Qt4。
cmake: symbol lookup error: cmake: undefined symbol: archive_write_add_filter_zstd
这错误的原因是缺少libarchive库或者版本不匹配。你可以尝试升级或者重新安装libarchive库,如果已经安装了,可以检查一下库的版本是否与cmake所需要的版本匹配。你也可以尝试在CMakeLists.txt中添加以下代码来手动指定使用的libarchive库路径:
```
set(LIBARCHIVE_ROOT "/path/to/libarchive")
find_library(LIBARCHIVE_LIBRARY NAMES archive PATHS ${LIBARCHIVE_ROOT}/lib)
include_directories(${LIBARCHIVE_ROOT}/include)
target_link_libraries(your_target ${LIBARCHIVE_LIBRARY})
```
注意将`your_target`替换为你自己的项目名称。