CMake无法在新版本中识别C ++编译器版本

时间:2017-02-19 23:03:03

标签: c++ c++11 compilation cmake c++14

我发生了一件非常奇怪的事情:如果我第一次编译项目(或者我删除'build'文件夹),CMake无法选择正确版本的g ++

因此,使用auto时,“全新”编辑会出错,但如果我再次编译,则一切顺利(直到我删除'build'文件夹)。

这是你的档案:

的CMakeLists.txt

file(GLOB_RECURSE SOURCES
    include/*.h
    src/*.cpp
)

SET(CMAKE_CXX_FLAGS "-std=c++14")

set(filename $ENV{env_filename})

cmake_minimum_required(VERSION 2.8)
project( filename )
add_executable( ${filename} ${filename}.cpp ${SOURCES})

compile.sh

#!/bin/bash
clear
set -e
source filedata.txt
export env_filename=$filename
mkdir -p build && cd build
cmake ..  &> /dev/null
make -B
./$filename

filedata.txt

filename="1_Example"

提前致谢,

爱德华

1 个答案:

答案 0 :(得分:1)

无法真正帮助您解决实际错误,但是......

为什么使用set -e?你不应该跳过错误,你应该修复它们......

您的CMakeLists.txt结构也不正确。你应该在第一行有:

cmake_minimum_required(VERSION 2.8)
project( filename )

否则,它被认为是不正确的。它可能会奏效,但它不应该。在运行CMake命令之前,您必须指定运行该文件所需的版本。

你的SOURCES条目应该有双引号。

<强>更新

结果将cmake_minimum_requirement(VERSION 2.8)首先修复为OP。在那之后,在CMake中结构上不需要太多,你可以使用你的常识,但首先要有版本要求。