Ошибка связывания при добавлении библиотеки в Cmake - PullRequest
0 голосов
/ 12 июля 2020

Я новичок в CMake. Я пытаюсь проверить, как добавить библиотеку stati c с помощью cmake. Я сделал небольшую библиотеку, в которой есть одна функция print, которая печатает «Hello World». Вот так выглядит мое дерево:

введите описание изображения здесь

Мои файлы:

say_hi.h:

#ifndef MATH
#define MATH

void hi();

#endif //MATH

say_hi.cpp:

#include <iostream>

#include "math/say_hi.h"

void hi() {
  std::cout << "hi";
}

main.cpp:

#include "say_hi/say_hi.h"

int main() {
  hi();
}

Основной CMakeListst.txt:

cmake_minimum_required(VERSION 3.14.5)
project(CmakeTest)

add_subdirectory(say_hi_lib)
include_directories(say_hi_lib/include)

set(SOURCES main.cpp)
add_executable(${PROJECT_NAME} ${SOURCES})

link_libraries(${PROJECT_NAME} say_hi)

say_hi_lib/CMakeListst.txt:

include_directories(include)
add_subdirectory(include)

say_hi_lib/include/CMakeLists.txt:

add_library(say_hi src/say_hi.cpp)

Это сложно чтобы получить хорошие учебники, но моя интуиция такова, что строка add_library(say_hi src/say_hi.cpp) добавляет библиотеку с этим исходным файлом, а затем строка link_libraries(${PROJECT_NAME} say_hi) свяжет ее правильно. Однако при вызове функции hi() я получаю ошибку связывания в main.cpp. Почему это происходит?

...