crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в CMake. Линковка статической библиотеки
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
demon051 Дата 23.9.2021, 12:06
 
Цитата(demon051 @ 23.9.2021, 10:48) *
Всем привет.
Попал в какую-то глупую ситуацию...
На пальцах.
Есть либа для примера с одной функцией hello, выводящей текст

//lib.c
#include <stdio.h>
#include <lib.h>

void hello()
{
printf("Hello world! I'm static library\n");

}


//lib.h
#ifndef LIB_H
#define LIB_H

void hello();
#endif // LIB_H



Собирается как статическая
#CMAkeLists.txt
project(mylib)
set(SOURCES lib.c)
set(HEADERS lib.h)
add_library(mylib ${SOURCES} ${HEADERS})
target_include_directories(mylib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})


Всё ок.
Получается файл libmylib.a

Теперь пытаюсь связать его с проектом, например
#include <iostream>
#include "lib.h"
using namespace std;
void hello();
int main(int argc, char *argv[])
{
    cout << "Hello World!" << endl;
    hello();
    return 0;
}


Файл для сборки такой
#CMAkeLists.txt
cmake_minimum_required(VERSION 2.8)

project(TestLib)

option(USE_STATIC "Use static library" ON)

find_library(MYLIBRARY mylib /home/user/projects/TestLib/mylib/build-mylib-armhf-Default)

message("--------------------------------------------")
message(lib path = ${MYLIBRARY})
message("--------------------------------------------")


add_executable(TestLib "main.cpp")

target_link_libraries(TestLib PRIVATE ${MYLIBRARY})

target_include_directories(TestLib PUBLIC ${PROJECT_SOURCE_DIR}/mylib)


При попытке собрать проект получаю сообщение

/home/user/projects/TestLib/main.cpp:-1: error: undefined reference to `hello()'


И впадаю в ступор )) Что не так???


Тема закрыта, всем спасибо, разобрался ))))))
demon051 Дата 23.9.2021, 10:48
  Всем привет.
Попал в какую-то глупую ситуацию...
На пальцах.
Есть либа для примера с одной функцией hello, выводящей текст

//lib.c
#include <stdio.h>
#include <lib.h>

void hello()
{
printf("Hello world! I'm static library\n");

}


//lib.h
#ifndef LIB_H
#define LIB_H

void hello();
#endif // LIB_H



Собирается как статическая
#CMAkeLists.txt
project(mylib)
set(SOURCES lib.c)
set(HEADERS lib.h)
add_library(mylib ${SOURCES} ${HEADERS})
target_include_directories(mylib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})


Всё ок.
Получается файл libmylib.a

Теперь пытаюсь связать его с проектом, например
#include <iostream>
#include "lib.h"
using namespace std;
void hello();
int main(int argc, char *argv[])
{
    cout << "Hello World!" << endl;
    hello();
    return 0;
}


Файл для сборки такой
#CMAkeLists.txt
cmake_minimum_required(VERSION 2.8)

project(TestLib)

option(USE_STATIC "Use static library" ON)

find_library(MYLIBRARY mylib /home/user/projects/TestLib/mylib/build-mylib-armhf-Default)

message("--------------------------------------------")
message(lib path = ${MYLIBRARY})
message("--------------------------------------------")


add_executable(TestLib "main.cpp")

target_link_libraries(TestLib PRIVATE ${MYLIBRARY})

target_include_directories(TestLib PUBLIC ${PROJECT_SOURCE_DIR}/mylib)


При попытке собрать проект получаю сообщение

/home/user/projects/TestLib/main.cpp:-1: error: undefined reference to `hello()'


И впадаю в ступор )) Что не так???
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 24.4.2024, 14:56