gpt4 book ai didi

c++ - 更新 CMake(似乎)破坏了我的程序

转载 作者:太空狗 更新时间:2023-10-29 23:20:21 29 4
gpt4 key购买 nike

我从 CMake 3.6 更新到任何最新版本 (3.12.0-rc2),现在我的一个程序无法编译。

奇怪的是,错误消息显示了标准库本身中的 undefined symbol 。这是错误消息:

Undefined symbols for architecture x86_64:
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(char const*)", referenced from:
GetName() in ncc.cpp.o
Expression() in ncc.cpp.o
Term() in ncc.cpp.o
GetNum() in ncc.cpp.o
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string()", referenced from:
GetName() in ncc.cpp.o
GetNum() in ncc.cpp.o
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator+=(char)", referenced from:
GetName() in ncc.cpp.o
GetNum() in ncc.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [ncc] Error 1
make[1]: *** [CMakeFiles/ncc.dir/all] Error 2
make: *** [all] Error 2

我该如何解决这个问题?我需要链接到不同版本的标准库吗?如果是这样,我如何告诉 CMake?

这是我的 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.0)

project(ncc)

add_definitions(-std=c++14)

add_subdirectory(${CMAKE_SOURCE_DIR}/src/)

add_executable(ncc ${CompSource})
add_executable(ncc-opt ${OptSource})
add_executable(nci ${IntSource})

我尝试了使用 add_definitions 行和不使用它,这似乎没有什么不同。

这是运行 make VERBOSE=1 的相关输出:

Scanning dependencies of target ncc
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/ncc.dir/build.make CMakeFiles/ncc.dir/build
[ 83%] Building CXX object CMakeFiles/ncc.dir/src/ncc.cpp.o
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -std=c++14 -o CMakeFiles/ncc.dir/src/ncc.cpp.o -c /Users/nepps/Dropbox/Projects/ncc/src/ncc.cpp
[100%] Linking CXX executable ncc
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/ncc.dir/link.txt --verbose=1
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/ncc.dir/src/ncc.cpp.o -o ncc
Undefined symbols for architecture x86_64:
(same errors as above)

如果您需要更多信息,请随时发表评论。我使用的是运行 MacOS 10.13.3 的 MacBook pro。

最佳答案

好吧,我不确定它为什么起作用,但是程序中的所有函数都被标记为 static 并删除它使得错误消失了。去图吧。

关于c++ - 更新 CMake(似乎)破坏了我的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51180680/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com