У меня есть метод, который я определил следующим образом:
int generate(const char* infile, std::vector<uint8_t> &detection, int another_flag);
Я хотел, чтобы detection
был ссылкой на вектор, переданный в него (отсюда и &), так что изменения в этом методе происходит с оригиналом и зависает при выходе из метода.
Я встроил этот метод в общую библиотеку. В том же проекте я написал тестовую программу, которая импортирует заголовок:
#import <extract.hpp>
В тестовой программе я вызываю метод, подобный следующему:
const char* infile = argv[1];
std::vector<uint8_t> detection;
int ret;
ret = generate(infile, detection, 0);
Он компилируется, но он не будет связываться, жалуясь:
undefined reference to `generate(char const*, std::vector<unsigned char, std::allocator<unsigned char> >&, int)'
Я пытаюсь собрать проект с помощью cmake. Запись для тестового файла выглядит следующим образом:
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) <-- the location of extract.hpp
add_executable(harness harness.cpp)
target_include_directories(harness PRIVATE include) <-- desperate attempt
target_link_libraries(harness ${CV_LIBS})
Ссылка на этот файл содержится в другом файле CMakeLists с помощью команды add_subdirectory(test)
.
Что я делаю не так?