2017-02-19 13 views
0

何か私には何かが起こっています:初めてプロジェクトをコンパイルする(または「ビルド」フォルダーを削除する)場合、CMakeは正しいバージョンのg ++​​ のみを選択できませんCMakeが新しいビルドでC++コンパイラーのバージョンを特定できません

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" 

おかげで、

エドゥアルド

+0

あなたが開始するために、このシェルスクリプトを必要とする理由私は本当に表示されません。 –

+0

@BaummitAugenは、ファイル名を気にせずに単純な '。/ compile.sh'を使ってファイルをコンパイルして実行できるようにする必要があります。 – eduherminio

答えて

1

本当に...実際のエラーのお手伝いをすることはできませんが、

なぜあなたは-eを設定し使用していますか?あなたは

あなたのCMakeLists.txt

も間違って構成されている...あなたがそれらを修正する必要があり、エラーをスキップするべきではありません。最初の行には次のものがあります。

cmake_minimum_required(VERSION 2.8) 
project(filename) 

それ以外は間違っていると考えられます。それは動作するかもしれませんが、そうしてはいけませんCMakeコマンドを実行する前に、ファイルを実行するために必要なバージョンを指定する必要があります。

あなたのSOURCESエントリは、それらの二重引用符で囲む必要があります。

UPDATE

まずOPのためにそれを固定入れcmake_minimum_requirement(バージョン2.8)が判明しました。 CMakeで構造的に必要とされることはあまりありませんが、残りの部分については常識を使うことができますが、最初にバージョンの要件が必要です。

+0

mmそれ以降のコマンドが失敗した場合は、 'set -e'を使ってシェルスクリプトを終了していました。 は ''設定(ファイル名の$ ENV {env_filename}) ''の前にプロジェクト(ファイル名)を配置することが可能ですか? – eduherminio

+0

ああ、右は私がいつも考えていることとは逆に働いています。そして、そうではありませんが、私は99.9999%のプロジェクトを($ ENV {env_filename})で直接使用することができます。 –

+0

と '' add_executable($ ENV {env_filename} $ ENV {env_filename}の.cpp $ {SOURCES}) 'と' add_executable($ {ファイル名} $ {ファイル名}の.cpp $ {SOURCESを})置換? envを読む価値がありますか?変数を作成するのではなく、変数を3回使用するか?理にかなってhttps://cmake.org/Wiki/CMake_Useful_Variables – eduherminio

関連する問題