رفتن به مطلب
جامعهٔ برنامه‌نویسان ایران
نیما غراب

نحوهٔ کامپایل کتابخانهٔ Curl با کامپایلر مایکروسافت


پست های پیشنهاد شده

ارسال شده در (ویرایش شده)

به نام خدا

با سلام خدمت دوستان گرامی.

از آنجایی که کامپایل هر کتابخانه مرتبط با زبان C++ در ویندوز نکات و فوت و فن خاص خود را دارد لذا تصمیم بر آن شد تا در اینجا به نحوه کامپایل کتابخانه Curl در این سیستم عامل بپردازیم.

مشخصات کلی کامپایلر و کتابخانه به شرح زیر می‌باشد:

Curl: 7.68.0

Microsoft Build Tools: 15.9.18

Compiler and OS Architectures: x64

ابتدا به این سایت رفته و کد منبع Curl را دریافت نمایید، دقت کنید که باینری کتابخانه Curl برای ویندوز موجود است ولی با کامپایلر MinGW برای ویندوز کامپایل شده که مطلوب ما نمیباشد.

به دلیل اعلام نویسندگان Curl در رابطه با نگه‌داری ضعیف در پشتیبانی از CMake لذا به شکل مستقیم از کنسول مایکروسافت و Makefile سازگار با آن یعنی Makefile.vc استفاده خواهد شد.

پس از دریافت و استخراج محتویات، می‌بایست کنسولx64 Native Tools Command Prompt for VS 2017 را باز کرده و دستورات زیر را مطابق شکل در آن وارد می‌کنیم:

F:

cd F:\curl-7.68.0\winbuild

که دستور اول برای تغییر درایور و دستور دوم نشانی محل استخراج کتابخانه Curl روی سیستم نگارنده مطلب می‌باشد.

 

console.jpg.1bd86c0e5adcbc25e0742fa67e57dd18.jpg

سپس دستور زیر را وارد می‌کنیم:

nmake /f Makefile.vc mode=dll

که در دستور بالا /f مشخص کننده نشانی makefileمورد نظر و modeمشخص کننده نحوه کامپایل کتابخانه به شکل ایستا یا پویا را شامل می‌شود که در اینجا کتابخانه به شکل پویا کامپایل می‌شود.

چنانچه مایل باشیم کتابخانه به شکل ایستا کامپایل شود می‌بایست دستور زیر را وارد کنیم:

nmake /f Makefile.vc mode=static

پس از ورود دستور بالا کتابخانه در مسیر F:\curl-7.68.0\ پوشه‌ای با نام buildsساخته و فایل‌های حاصل از کامپایل را در آن ذخیره می‌کند که در تصویر زیر نتیجه نهایی کامپایل آورده شده است.

76577981_FileSystem.jpg.428caf98c992fcb70a031193bd5b523b.jpg

حال یک پروژه ساده از نوع Plain C++ Application در Qt Creator به منظور آزمایش کامپایل صحیح کتابخانه Curl ایجاد می‌کنیم.

قطعه کد زیر را در فایل main.cpp وارد می‌کنیم:

#include <curl\curl.h>

int main()

{

    CURL *curl;

    curl = curl_easy_init();

    curl_easy_cleanup(curl);

    return 0;

}

و درنهایت در فایل CMake پروژه دستورات زیر را وارد می‌کنیم:

cmake_minimum_required(VERSION 3.5)

project(Curl LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(Curl main.cpp)

target_include_directories(Curl PRIVATE "F:/curl-7.68.0/builds/libcurl-vc-x64-release-dll-ipv6-sspi-winssl/include")
target_link_libraries(Curl PRIVATE "F:/curl-7.68.0/builds/libcurl-vc-x64-release-dll-ipv6-sspi-winssl/lib/libcurl.lib")

در گام آخر نیاز است تا فایل dll حاصل از کامپایل کتابخانه را در کنار فایل اجرایی پروژه قرار داده تا برنامه بدون مشکل اجرا شود این فایل در شاخه bin واقع در پوشه builds محل کامپایل کتابخانه موجود می‌باشد.

چنانچه کتابخانه را به شکل ایستا کامپایل کرده باشیم نیاز است تا ماکرو CURL_STATICLIB را قبل از ورود هرگونه فایل سرآیند کتابخانه Curl مطابق زیر تعریف کنیم:

#define CURL_STATICLIB

متن کامل کد با رعایت نکته گفته شده چنین می‌باشد:

#define CURL_STATICLIB

#include <curl\curl.h>

int main()

{

    CURL *curl;

    curl = curl_easy_init();

    curl_easy_cleanup(curl);

    return 0;

}

چنانچه مشکل یا ایرادی در نوشته بالا ملاحظه نمودید، نگارنده مطلب را بی خبر نگذارید.

سپاس فراوان.

ویرایش شده در توسط نیما غراب

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو ملحق شوید

شما همین الآن می‌توانید مطلبی را ارسال و بعداً ثبت‌نام کنید. اگر حساب کاربری دارید، و با حساب کاربری خود مطلب ارسال کنید.
نکته: مطلب شما قبل از انتشار نیاز به بازبینی توسط میانجی‌گر‌ها دارد.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...