2017-03-22 11 views
2

私は非常にシンプルなCMakeLists.txtファイルを持っています。Cmakeが存在するソースファイルを見つけることができません

cmake_minimum_required (VERSION 2.6) 
project (test_proj) 

set(TEST_INCLUDE_DIR 
    "${PROJECT_SOURCE_DIR}/src") 

set(TEST_CPP "${PROJECT_SOURCE_DIR}/src/source_file.cpp" 
      "${PROJECT_SOURCE_DIR}/src/main.cpp") 

set(TEST_HEADERS 
    "${PROJECT_SOURCE_DIR}/src/header.h") 

#include_directories(${TEST_INCLUDE_DIR}) 


add_executable(testproj "${TEST_CPP}" "${TEST_HEADERS}") 

そして、私はそのようにそれを実行すると:

... 
-- Configuring done 
CMake Error at CMakeLists.txt:16 (add_executable): 
    Cannot find source file: 

    /home/me/test_proj/src/source_file.cpp;/home/me/test_proj/src/main.cpp 

    Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp 
    .hxx .in .txx 

しかし、それらのファイル:

mkdir build 
cd build 
cmake .. 

私は次の出力を得る

/home/me/test_proj/src/source_file.cpp 
/home/me/test_proj/src/main.cpp 

があります。正確にそのパスの下に。なぜそれが見つからないのですか? いずれか1つを削除すると、TEST_CPPにはソースファイルが1つだけ含まれているため、プロジェクトはうまく生成されます。しかし、なぜ私は1つ以上のソースを持っていない場合、それはできないのですか?

私は結果は同じであり、エンド・シンボルとしてCR LFだけLFを試みました。

cmakeのバージョン2.8.12.2

答えて

3

${TEST_CPP}の前後に引用符を入れないでください:

add_executable(testproj ${TEST_CPP} ${TEST_HEADERS}) 

そうでなければ、それは;区切られたリストとしてソースを追加します。

そして、ちょうどヒント:あなたは${PROJECT_SOURCE_DIR}ですべてを接頭辞にする必要はありません(それはCMakeので自動的に行われます)。

リファレンス

+0

はい、動作します。そのような配備された答えをありがとう。 7分で私はそれを受け入れることができます。 – Arkady

関連する問題