【问题标题】:CMake: how to select a different shellCMake:如何选择不同的外壳
【发布时间】:2013-06-04 09:20:37
【问题描述】:

使用CMake,如何选择要使用的shell?默认情况下,我的似乎设置为sh,但我需要从我的.bashrc 加载一些环境变量,我想改变shell 是要走的路。

我实际上是在尝试使用以下指令将 clang++ 设置为 C++ 编译器:

set (CMAKE_CXX_COMPILER "clang++")

但是当我尝试编译代码时,正在使用的 shell 是 sh,它没有找到 clang++,因为我通过以下 export 在我的 .bashrc 中使二进制文件可见:

export PATH="${PATH}:~/llvm/Debug+Asserts/bin/"

这是错误,确认sh 找不到clang++ 二进制文件:

$ make
[100%] Building CXX object CMakeFiles/floyd-warshall.dir/main.cpp.o
/bin/sh: 1: clang++: not found
make[2]: *** [CMakeFiles/floyd-warshall.dir/main.cpp.o] Error 127
make[1]: *** [CMakeFiles/floyd-warshall.dir/all] Error 2
make: *** [all] Error 2

【问题讨论】:

  • 这很奇怪......这看起来不像是 CMake 错误消息。你能发布完整的错误日志吗?
  • 在你正在执行cmake的shell中尝试which clang++。错误可能会出现,因为 clang++ 不在您执行 cmake 的 shell 路径中。
  • @Samveen Weird,which 找不到 clang++,尽管我可以直接使用 clang++ 执行它。我的意思是,当前会话计算clang++,并正确执行它。
  • @Guillaume 我认为它不会增加太多,但我已经对整个错误进行了编辑。
  • @Rubens 也试试type clang++alias|grep clang。也可以是别名。

标签: c++ bash cmake clang


【解决方案1】:

您不应该在您的 cmake 文件中以这种方式强制 c++ 编译器(起初我以为您使用的是工具链文件)。删除该行,让 CMake 自己找到编译器。要使用 clang++,请在调用 cmake 之前设置一些环境变量。比如:

export CC=clang
export CXX=clang++
cmake /path/to/your/project
make

【讨论】:

  • 是的,这是我在谷歌上找到的解决方案,但我认为除了在我的 .bashrc 中添加 exports 之外应该有其他方法。我正在考虑将外壳从sh 更改为bash;不过,我猜可能没有更好的解决方案。
  • 另一种解决方案是使用工具链文件:在 toolchain.cmake 文件中移动“set(CMAKE_CXX_COMPILER clang++)”语句,然后调用 cmake /path/to/your/project -DCMAKE_TOOLCHAIN_FILE=/ path/to/toolchain.cmake
猜你喜欢
  • 2010-09-09
  • 2022-01-12
  • 2013-09-11
  • 1970-01-01
  • 2014-11-23
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
相关资源
最近更新 更多