Код: Выделить всё
cmake_minimum_required(VERSION 3.19)
project(MyHello LANGUAGES CXX)
find_package(deal.II 9.4.2 CONFIG REQUIRED)
find_package(Boost REQUIRED)
find_package(TBB CONFIG REQUIRED)
add_executable(dealII_test dealII_test.cpp)
target_link_libraries(dealII_test
PUBLIC TBB::tbb
PUBLIC TBB::tbbmalloc
PUBLIC TBB::tbbmalloc_proxy
PRIVATE Boost::boost
PRIVATE deal_II
)
Код: Выделить всё
ninja: error: '/lib', needed by 'dealII_test.exe', missing and no known rule to make it
Проблема в том, что я не могу определить источник неправильного определения, вызывающего ошибку. Итак, я хотел бы знать, как отладить или распечатать содержимое всего, что находится внутри части Deal_II.
Я попробовал ответ, получивший наибольшее количество голосов: «Отображение списка связанных библиотек цели в cmake», но я получаю только то, что уже знаю, просто прочитав сценарий CMake. Мне нужен какой-то полный список файлов DLL/SO/LIB, связанных с исполняемым файлом, а не имена зависимостей высокого уровня, уже перечисленные в CMakeLists.txt.
Я создаю с помощью Conan, поэтому мне лучше попытаться отладить содержимое Deal_II с помощью рецепта и/или задействованных файлов CMakeLists.txt.
Обновить: Вот оскорбительные строки в результирующем ninja.build тестового исполняемого файла (обратите внимание на плавающий символ \lib в LINK_LIBRARIES):
Код: Выделить всё
#############################################
# Link the executable dealII_test.exe
build dealII_test.exe: CXX_EXECUTABLE_LINKER__dealII_test_Release CMakeFiles\dealII_test.dir\dealII_test.cpp.obj | D$:\conan2_packages\b\tbb6a85f71ae13a6\p\lib\tbb.lib D$:\conan2_packages\b\tbb6a85f71ae13a6\p\lib\tbbmalloc_proxy.lib D$:\conan2_packages\b\deali2369f58da7895\p\lib\deal_II.lib D$:\conan2_packages\b\tbb6a85f71ae13a6\p\lib\tbbmalloc.lib \lib
FLAGS = /DWIN32 /D_WINDOWS /GR /EHsc /O2 /Ob2 /DNDEBUG -MD
LINK_FLAGS = /machine:x64 /INCREMENTAL:NO /subsystem:console
LINK_LIBRARIES = D:\conan2_packages\b\tbb6a85f71ae13a6\p\lib\tbb.lib D:\conan2_packages\b\tbb6a85f71ae13a6\p\lib\tbbmalloc_proxy.lib D:\conan2_packages\b\deali2369f58da7895\p\lib\deal_II.lib D:\conan2_packages\b\tbb6a85f71ae13a6\p\lib\tbbmalloc.lib \lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
LINK_PATH = -LIBPATH:D:\conan2_packages\b\boost8ca5fb33f6fad\p\lib
OBJECT_DIR = CMakeFiles\dealII_test.dir
POST_BUILD = cd .
PRE_LINK = cd .
TARGET_COMPILE_PDB = CMakeFiles\dealII_test.dir\
TARGET_FILE = dealII_test.exe
TARGET_IMPLIB = dealII_test.lib
TARGET_PDB = dealII_test.pdb
Подробнее здесь: https://stackoverflow.com/questions/798 ... es-command
Мобильная версия