Code: Select all
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
)
Code: Select all
ninja: error: '/lib', needed by 'dealII_test.exe', missing and no known rule to make it
Das Problem ist, dass ich den Ursprung der Fehldefinition, die den Fehler verursacht, nicht finden kann. Daher würde ich gerne wissen, wie ich den Inhalt von allem, was sich im Deal_II-Teil befindet, debuggen oder drucken kann.
Ich habe die am häufigsten gewählte Antwort „Anzeigen der Liste der verknüpften Bibliotheken eines Ziels in cmake“ ausprobiert, aber ich bekomme nur das, was ich bereits weiß, indem ich einfach das CMake-Skript lese. Ich hätte gerne eine Art vollständige Liste der DLL/SO/LIB-Dateien, die mit der ausführbaren Datei verknüpft werden, und nicht die Abhängigkeitsnamen auf hoher Ebene, die bereits in CMakeLists.txt aufgeführt sind.
Ich baue mit Conan, daher ist es besser, wenn ich versuche, den Inhalt von Deal_II über das Rezept und/oder die beteiligten CMakeLists.txt-Dateien zu debuggen.
Update: Hier ist das Problem Zeilen im resultierenden ninja.build der ausführbaren Testdatei (beachten Sie die frei schwebende \lib in LINK_LIBRARIES):
Code: Select all
#############################################
# 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
Mobile version