Я новичок в 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
. Почему это происходит?