最近私のプロジェクトをビルドするために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はデフォルトで並列ビルドを使用していますか?
よろしく、
サイモン
target_link_libraries(lib3 lib1 lib2)とtarget_link_libraries(lib3 $ {LIB1_PATH} /lib1.a $ {LIB2_PATH} /lib2.a)の違いは何ですか?私はcmakeビルドの成功を使用することができます、並行してビルドしない場合。あなたが言ったように試してみると、これは前と同じです – simon
.a、cmake ./ && makeは成功できないので、.aは削除できません。 – simon
ファイルに依存関係を追加しています。ターゲットへの依存。エラーメッセージとは何ですか? – arved