Использование сторонних файлов C с C Lion, перспектива для начинающих - PullRequest
0 голосов
/ 23 сентября 2018

Я в отчаянии из-за простого объяснения простой проблемы.
Я создал программу на Java, которую мне нужно перекодировать в C по соображениям производительности.Итак, я научился программировать на C. Проблема в том, что стандартные библиотеки C не содержат коллекций (почему ????), таких как хеш-таблицы, наборы деревьев и т. Д. Итак, я нашел это: https://github.com/srdja/Collections-C.

Я использую CLion для Windows, я хорошо знаю о кодировании, но НИЧЕГО не знаю о компиляции, CMake, Linux и т. Д. Мой вопрос: я хочу использовать эти внешние исходные файлы в моем проекте, почему это так сложно?Учебник по приведенной выше ссылке говорит мне использовать командные строки Linux и другие вещи, которые я не понимаю.В Интернете я нахожу материал о том, как мне добавлять команды в CMakelist, но ни одна из них не работает по различным причинам.Я даже не могу скопировать все .c и .h в свой проект, потому что «они не являются частью проекта».Так может кто-нибудь сказать мне, как заставить этот простой код работать?

#include <stdio.h>
#include "hashtable.h"
int main() {
    Hashtable *table;
    hashtable_new(&table); //this is a function that creates the new hashtable in the source code of Collections-C
    return 0;
}

Кстати, потому что я думаю, что это та же проблема, как я могу иметь подкаталоги в моем проекте, чтобы я мог поместить свои файлы заголовковпрочь сохранить дерево проекта в порядке?Я пытался добавить add_subdirectories($/include) в свой CMakelist.txt

Я ожидаю, что люди скажут мне, что уже есть много похожих вопросов, но ни один из тех, которые я нашел, мне не понятен.

СпасибоВы, если у вас есть терпение, чтобы объяснить это мне.

Анри

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Решением было создать библиотеку, а затем делать что-то с CMake.Я следовал этому учебнику.

0 голосов
/ 27 сентября 2018

Это для C ++, но оно должно работать для вашего кода C.В этом примере определяется, где найти заголовки OpenSSL и Google Test и как связать их с библиотекой Google Test и библиотекой OpenSSL (которая, как выясняется, находится в C):

cmake_minimum_required(VERSION 3.5)
project(stackexample)

set(CMAKE_CXX_STANDARD 11)
find_library(GTest required)
include_directories(${GTEST_INCLUDE_DIRS} /usr/include/openssl)

set(
    SOURCE_FILES
    StackExample.cpp
    StackExample.h
)

add_executable(stackexample ${SOURCE_FILES})

target_link_libraries(stackexample -lgtest -lssl -lcrypto pthread)

Collections-C, по-видимому, имеет установщик, поэтому вы бы

  • перечислили путь к установленным заголовкам в строке include_directories
  • Перечислили установленную библиотеку в строке target_link_libraries
...