Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake应用程序和DLL都链接到同一个静态库?_Dll_Static_Cmake_Linker - Fatal编程技术网

CMake应用程序和DLL都链接到同一个静态库?

CMake应用程序和DLL都链接到同一个静态库?,dll,static,cmake,linker,Dll,Static,Cmake,Linker,我试图用CMake做一些简单的事情,但我遇到了一些问题 我有一个应用程序需要链接到一个DLL,该DLL本身链接到一个静态库。这些模块中的每个模块都位于其自己的文件夹中,其中包含其自己的CMakeLists.txt文件 我使用add_subdirectory()来构建项目层次结构,这样DLL add_subdirectory()就可以添加静态库(以及指向静态库的链接),而应用程序使用add_subdirectory()来添加到DLL项目中 现在,问题是在最后一个项目中,CMake使应用程序链接到D

我试图用CMake做一些简单的事情,但我遇到了一些问题

我有一个应用程序需要链接到一个DLL,该DLL本身链接到一个静态库。这些模块中的每个模块都位于其自己的文件夹中,其中包含其自己的CMakeLists.txt文件

我使用add_subdirectory()来构建项目层次结构,这样DLL add_subdirectory()就可以添加静态库(以及指向静态库的链接),而应用程序使用add_subdirectory()来添加到DLL项目中

现在,问题是在最后一个项目中,CMake使应用程序链接到DLL和静态库,尽管我在CMakeLists.txt文件中明确要求它只链接到DLL。显然,如果DLL已经链接到静态,我不希望应用程序链接到静态


我怀疑它与add_subdirectory()有关,但我不知道如何解决这个问题。有人能告诉我我做错了什么吗?

默认情况下,“library1”与“library2”的链接被传播给“library1”(例如,一个应用程序)的所有用户。只要“library2”是共享的或静态的,就会执行此操作

对于超级链接传播,请使用专用链接:


非常感谢。我会尝试一下,一旦我证实它有效,我就会接受你的答案。(Afk现在)完美!这正是我需要的。
target_link_libraries(library1 PRIVATE library2)