Clionのlibgit2 APIを使用して何かを実行するのは難しいと思っています。私はHomebrewを使って、必要なものすべてをインストールしました。Clionのlibgit2とリンクできない
args = std_cmake_args
...
args << "-DBUILD_SHARED_LIBS=OFF"
#include <git2.h>
前に、この編集でうまく動作しますが、私はそれを実行するように見える傾けます。
私はいくつかの簡単な例を試してみました、動作するかどうかを確認するためにから例を所有している私はlibgit2を取ることにしたので、動作していないようだが、無朗報 私は次のエラー
/Applications/CLion.app/Contents/bin/cmake/bin/cmake --build /Users/addo/ClionProjects/Libgit2Training/cmake-build-debug --target Libgit2Training -- -j 4 [ 50%] Building C object CMakeFiles/Libgit2Training.dir/main.c.o [100%] Linking C executable Libgit2Training Undefined symbols for architecture i386: "_git_blob_lookup", referenced from:
_blob_parsing in main.c.o "_git_blob_rawcontent", referenced from:
_blob_parsing in main.c.o "_git_blob_rawsize", referenced from:
_blob_parsing in main.c.o "_git_commit_author", referenced from:
_commit_parsing in main.c.o
_revwalking in main.c.o "_git_commit_committer", referenced from:
_commit_parsing in main.c.o "_git_commit_create_v", referenced from:
_commit_writing in main.c.o "_git_commit_free", referenced from:
_commit_parsing in main.c.o
_tag_parsing in main.c.o
_revwalking in main.c.o "_git_commit_id", referenced from:
_commit_parsing in main.c.o "_git_commit_lookup", referenced from:
_commit_writing in main.c.o
_commit_parsing in main.c.o
_revwalking in main.c.o "_git_commit_message", referenced from:
_commit_parsing in main.c.o
_revwalking in main.c.o "_git_commit_parent", referenced from:
_commit_parsing in main.c.o "_git_commit_parentcount", referenced from:
_commit_parsing in main.c.o "_git_commit_time", referenced from:
_commit_parsing in main.c.o "_git_config_get_int32", referenced from:
_config_files in main.c.o "_git_config_get_string", referenced from:
_config_files in main.c.o "_git_config_open_ondisk", referenced from:
_config_files in main.c.o "_git_index_entrycount", referenced from:
_index_walking in main.c.o "_git_index_free", referenced from:
_index_walking in main.c.o "_git_index_get_byindex", referenced from:
_index_walking in main.c.o "_git_libgit2_init", referenced from:
_main in main.c.o "_git_libgit2_shutdown", referenced from:
_main in main.c.o "_git_object_free", referenced from:
_tree_parsing in main.c.o "_git_object_type2string", referenced from:
_object_database in main.c.o
_tag_parsing in main.c.o "_git_odb_object_data", referenced from:
_object_database in main.c.o "_git_odb_object_free", referenced from:
_object_database in main.c.o "_git_odb_object_size", referenced from:
_object_database in main.c.o "_git_odb_object_type", referenced from:
_object_database in main.c.o "_git_odb_read", referenced from:
_object_database in main.c.o "_git_odb_write", referenced from:
_object_database in main.c.o "_git_oid_fmt", referenced from:
_oid_parsing in main.c.o
_object_database in main.c.o
_commit_writing in main.c.o
_commit_parsing in main.c.o
_reference_listing in main.c.o "_git_oid_fromstr", referenced from:
_oid_parsing in main.c.o
_commit_writing in main.c.o
_commit_parsing in main.c.o
_tag_parsing in main.c.o
_tree_parsing in main.c.o
_blob_parsing in main.c.o
_revwalking in main.c.o
... "_git_reference_list", referenced from:
_reference_listing in main.c.o "_git_reference_lookup", referenced from:
_reference_listing in main.c.o "_git_reference_symbolic_target", referenced from:
_reference_listing in main.c.o "_git_reference_target", referenced from:
_reference_listing in main.c.o "_git_reference_type", referenced from:
_reference_listing in main.c.o "_git_repository_free", referenced from:
_main in main.c.o "_git_repository_index", referenced from:
_index_walking in main.c.o "_git_repository_odb", referenced from:
_object_database in main.c.o "_git_repository_open", referenced from:
_main in main.c.o "_git_revwalk_free", referenced from:
_revwalking in main.c.o "_git_revwalk_new", referenced from:
_revwalking in main.c.o "_git_revwalk_next", referenced from:
_revwalking in main.c.o "_git_revwalk_push", referenced from:
_revwalking in main.c.o "_git_revwalk_sorting", referenced from:
_revwalking in main.c.o "_git_signature_new", referenced from:
_commit_writing in main.c.o "_git_strarray_free", referenced from:
_reference_listing in main.c.o "_git_tag_lookup", referenced from:
_tag_parsing in main.c.o "_git_tag_message", referenced from:
_tag_parsing in main.c.o "_git_tag_name", referenced from:
_tag_parsing in main.c.o "_git_tag_target", referenced from:
_tag_parsing in main.c.o "_git_tag_target_type", referenced from:
_tag_parsing in main.c.o "_git_tree_entry_byindex", referenced from:
_tree_parsing in main.c.o "_git_tree_entry_byname", referenced from:
_tree_parsing in main.c.o "_git_tree_entry_name", referenced from:
_tree_parsing in main.c.o "_git_tree_entry_to_object", referenced from:
_tree_parsing in main.c.o "_git_tree_entrycount", referenced from:
_tree_parsing in main.c.o "_git_tree_lookup", referenced from:
_commit_writing in main.c.o
_tree_parsing in main.c.o "_giterr_last", referenced from:
_check_error in main.c.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[3]: *** [Libgit2Training] Error 1 make[2]: *** [CMakeFiles/Libgit2Training.dir/all] Error 2 make[1]: *** [CMakeFiles/Libgit2Training.dir/rule] Error 2 make: *** [Libgit2Training] Error 2
これを取得Clion
cmake_minimum_required(VERSION 3.6)
project(Libgit2Training)
#set(CMAKE_CXX_STANDARD 11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=c11 ")
set(SOURCE_FILES main.c)
add_executable(Libgit2Training ${SOURCE_FILES})
の私CmakeList.txtがある私はlibgit2
ページ上のいくつかの助けを試してみましたが、この
CmakeList.txt
セットを()に変更しました
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=c11
CFLAGS += -I/usr/local/Cellar/libgit2/include
LDFLAGS += -L/usr/local/Cellar/libgit2/binaries
LIBRARIES += -lgit2 ")
と、私は次のエラーを得た:私は私がちょうど慣れるとこれから学ぶことを試みているが、同じように動作するように見えることはできません
libgit2に新しいです
/Applications/CLion.app/Contents/bin/cmake/bin/cmake --build /Users/addo/ClionProjects/Libgit2Training/cmake-build-debug --target Libgit2Training -- -j 4
[ 50%] Building C object CMakeFiles/Libgit2Training.dir/main.c.o
[100%] Linking C executable Libgit2Training
clang: error: no input files
make[3]: *** [Libgit2Training] Error 1
make[2]: *** [CMakeFiles/Libgit2Training.dir/all] Error 2
make[1]: *** [CMakeFiles/Libgit2Training.dir/rule] Error 2
make: *** [Libgit2Training] Error 2
seemed not to parse in a .c file.
を参照してください最小化私が知っている普通のAPIです。すべての助けに感謝します。
ハッピーニューイヤー!!!
なぜ共有ライブラリを無効にしていますか?どのようにして 'CMAKE_C_FLAGS'を設定するためにその文字列を思いついたのですか?これはリンクのlibgit2ガイドでは言及されていませんが、Homebrewに使用する正しいパスではなく、Cコンパイラにリンクする方法はほとんどありません。あなたの問題は非常に一般的で、libake2特有のものではなく、CMake、Cコンパイラ、および環境変数がどのように機能するかについてです。 –
@CarlosMartínNieto私は共有ライブラリを無効にしました。なぜなら、私はそれらをMac上でdyllibではなく静的にしたいからです。私はlibgit2ホームページ[here] [https://libgit2.github.com/docs/guides/build-and-link/]から文字列を取得しました。共有ライブラリを有効にして、再インストールしてグラウンドゼロからすべてをビルドしましたが、それでもget i386アーキテクチャの未定義シンボル: "_git_blob_lookup"、参照先: main.coの_blob_parsing –
@CarlosMartínNietoこの時点で何を提案しますか?私はそれをClionビルド設定からリンクするか、CMakeList.txtファイルでそれを行うことができます。 –