У меня есть простой исполняемый файл, который использует функции из библиотеки mylib на ~/mylib/lib/libmylib.so
.
На CMakeLists.txt
, я говорю CMAKE, где найти библиотеку и связать ее:
find_library(MYLIB_PATH mylib HINT $ENV{HOME}/mylib/lib)
target_link_libraries (output "${MYLIB_PATH}")
после выполнения cd build; cmake ..
генерируется Makefile , и вызов make
компилирует его успешно.
Но допустим, я комментирую вторую строку CMakeLists.txt
как
find_library(MYLIB_PATH mylib HINT $ENV{HOME}/mylib/lib)
# target_link_libraries (output "${MYLIB_PATH}")
и выполняю то же самое cd build; cmake ..
. Я получаю точно такой же Makefile , однако make
терпит неудачу с такими типами ошибок:
In function `Model::Model(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
Model.cpp:(.text+0x21): undefined reference to `TF_NewStatus'
Имеет смысл, что он терпит неудачу, потому что библиотека не связана. Но если оба Makefile одинаковы, почему один make
потерпит неудачу, а не другой?