2017-09-29 23 views
1

最近私のプロジェクトをビルドするためにclionを使用しましたが、私はすべてのプロジェクトをビルドするのにcmakeを使うことができます。誰でも助けてくれますか?ありがとう。clionビルドに失敗しました。cmakeコマンドは、並列ビルド時に失敗しました。

私は、clionのバージョンが2017.2で、clionをバンドルしたcmake 3.8.2とgdb 3.5.1を使用しています。 私のプロジェクト構造:

プロジェクト
├──Project1の
はSRC
│├──│SRC
├──のProject2

CMakeLists.txt└──│├──│└─ ─CMakeLists.txt
├──プロジェクト3
│├──SRC
│└──CMakeLists.txt
└─ ─CMakeLists.txt

プロジェクトのCMakeLists.txtは次のとおりです。

add_subdirectory(./project1) 
add_subdirectory(./project2) 
add_subdirectory(./project3) 

のProject1のCMakeLists.txtは静的lib1.aを構築するために使用します。

aux_source_directory(./src ${LIB1_SRC}) 
include_directories(./src ${LIB1_INC}) 
add_library(lib1 STATIC ${LIB1_SRC}) 

のProject2のCMakeLists.txtは静的LIB2を構築するために使用します。 a:

aux_source_directory(./src ${LIB2_SRC}) 
include_directories(./src ${LIB2_INC}) 
add_library(lib2 STATIC ${LIB2_SRC}) 

project3のCMakeLists.txtは、共有lib3を構築するためにlib1.aとlib2.aをリンクする必要があります.soは:私はLIB3とbuldを選択するclion実行/デバッグの構成を使用する場合

aux_source_directory(./src ${LIB3_SRC}) 
include_directories(./src ${LIB3_INC}) 
add_library(lib3 SHARED ${LIB3_SRC}) 
target_link_libraries(lib3 ${LIB1_PATH}/lib1.a ${LIB2_PATH}/lib2.a) 
set_property(TARGET lib3 PROPERTY LINK_DEPENDS ${LIB1_PATH}/lib1.a ${LIB2_PATH}/lib2.a) 

、それが失敗した構築する、lib3.so.で必要LIB1、または時々LIB2言います実行/デバッグ構成でlib1とlib2を選択すると、clionを使用してlib1とlib2を構築できます。

私はcmake ./を使い、make -j 16にも同じ問題があります。私がmake -j 1を使うと、それは成功します。
なぜ並列化できないのですか? clionはデフォルトで並列ビルドを使用していますか?

よろしく、
サイモン

答えて

0

あなたのCMakeLists.txtが完了していないが、私はあなたのCLionの質問、[ファイル] - > [に関しては、このようなLIB3のためtarget_link_librariesを変更すると、あなたの問題を解決する必要があり

target_link_libraries(lib3 lib1 lib2) 

を推測設定 - >ビルド、実行、配備 - > cmake->ビルドオプション

ここでは、並列ビルドを使用するかどうかを設定できます。

+0

target_link_libraries(lib3 lib1 lib2)とtarget_link_libraries(lib3 $ {LIB1_PATH} /lib1.a $ {LIB2_PATH} /lib2.a)の違いは何ですか?私はcmakeビルドの成功を使用することができます、並行してビルドしない場合。あなたが言ったように試してみると、これは前と同じです – simon

+0

.a、cmake ./ && makeは成功できないので、.aは削除できません。 – simon

+0

ファイルに依存関係を追加しています。ターゲットへの依存。エラーメッセージとは何ですか? – arved

関連する問題