Ich finde es schwierig, irgendwas mit libgit2 API in Clion auszuführen. Ich habe alles installiert, mit Homebrew. mit diesem bearbeiten, bevorVerlinkung gegen libgit2 in Clion funktioniert nicht
args = std_cmake_args
...
args << "-DBUILD_SHARED_LIBS=OFF"
#include <git2.h>
funktioniert gut, aber ich kann es nicht zu laufen scheinen.
Ich habe versucht, einige einfache Beispiele, es funktioniert so nicht zu sein scheint i libgit2 besitzt Beispiel von here nehmen entschieden, um zu sehen, ob es funktionieren wird, aber keine gute Nachricht ich die folgenden Fehler
/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
diese erhalten mein CmakeList.txt in Clion ist
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})
ich habe versucht, etwas Hilfe auf libgit2
Seite und änderte mein CmakeList.txt
set() zu diesem
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 ")
und ich habe die folgenden Fehler: minimieren i
/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.
sehen Ich bin neu in libgit2
ich gerade versucht, sich von diesem zu erhalten vertraut und lernen, aber kann nicht scheinen, wie zu arbeiten jede gewöhnliche API, die ich kenne. Alle Hilfe wird geschätzt.
Frohes Neues Jahr !!!
Warum deaktivieren Sie die gemeinsam genutzten Bibliotheken? Wie hast du diese Zeichenfolge gefunden, um 'CMAKE_C_FLAGS' zu setzen? Dies wird im libgit2-Handbuch zum Verknüpfen nicht erwähnt, sie sind nicht die richtigen Pfade, die für Homebrew verwendet werden, und es ist auch nicht so, wie man einem C-Compiler sagt, dass er es verlinken soll. Es scheint, dass Ihre Probleme sehr allgemein sind und dass CMake, ein C-Compiler und Umgebungsvariablen eher als irgendetwas libgit2-spezifisch funktionieren. –
@ CarlosMartínNieto Ich habe die Shared Libraries deaktiviert, weil ich sie als statische nicht dyllib auf Mac haben wollte. Ich habe die Zeichenfolge von der libgit2-Homepage [hier] [https://libgit2.github.com/docs/guides/build-and-link/], ich habe gerade freigegebene Bibliotheken aktiviert und neu installiert und baue alles von Ground Zero, aber ich immer noch get Undefined Symbole für Architektur i386: "_git_blob_lookup", referenziert von: _blob_parsing in main.co –
@ CarlosMartínNieto was schlagen Sie vor, dass ich an dieser Stelle tun? sollte ich es von der Clion-Build-Präferenz verknüpfen, oder ich kann es in der CMakeList.txt-Datei tun. –