Всем привет.
Попал в какую-то глупую ситуацию...
На пальцах.
Есть либа для примера с одной функцией 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()'
И впадаю в ступор )) Что не так???