Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/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
C++ 使用Cmake创建静态库和链接_C++_Cmake_Static Libraries_Static Linking - Fatal编程技术网

C++ 使用Cmake创建静态库和链接

C++ 使用Cmake创建静态库和链接,c++,cmake,static-libraries,static-linking,C++,Cmake,Static Libraries,Static Linking,我有一个应用程序需要使用两个库(pugixml和lua),并且需要能够构建多平台。我正在尝试使用Cmake来实现这一点。因为我有三个不同的解决方案(两个用于创建静态库,另一个用于实际使用这些库)。到目前为止,我所做的是为这两个库运行Cmake,并将这些静态库手动复制到lib文件夹中,然后再次运行Cmake 我需要减少这三个步骤,并将其作为一个单独的步骤,以便我可以在一次拍摄中处理多平台构建 我需要知道,我们是否需要为此类操作创建动态链接库、共享库或静态库 并且需要关于如何做到这一点的帮助。我尝试

我有一个应用程序需要使用两个库(pugixml和lua),并且需要能够构建多平台。我正在尝试使用Cmake来实现这一点。因为我有三个不同的解决方案(两个用于创建静态库,另一个用于实际使用这些库)。到目前为止,我所做的是为这两个库运行Cmake,并将这些静态库手动复制到lib文件夹中,然后再次运行Cmake

我需要减少这三个步骤,并将其作为一个单独的步骤,以便我可以在一次拍摄中处理多平台构建

我需要知道,我们是否需要为此类操作创建动态链接库、共享库或静态库

并且需要关于如何做到这一点的帮助。我尝试创建pugixml的源文件夹,复制cpp/hpp/h文件,并编写了一个cmakelists文件,如

set(HEADERS pugixml.hpp pugiconfig.hpp)
set(SOURCES ${HEADERS} pugixml.cpp)
add_library(pugixmlLib STATIC ${SOURCES})
target_link_libraries(pugixmlLib pugixml)

在解决方案中,我可以看到我的应用程序项目和pugixml项目,但在我的应用程序项目链接器属性中,我可以找到pugixml库。

动态和共享是相同的。类型其实并不重要,但由于您构建的自定义版本只用于一个目的,所以我可能会选择静态版本——只需处理一个文件。您应该显示所有相关的
CMakeLists.txt
文件。您还可以创建一个包含三个子项目(pugixml、lua、您的lib)的项目,并使用add_子目录逐个处理它们。我同意Dan的观点,你应该提供更多的信息。动态和共享是一样的。类型其实并不重要,但由于您构建的自定义版本只用于一个目的,所以我可能会选择静态版本——只需处理一个文件。您应该显示所有相关的
CMakeLists.txt
文件。您还可以创建一个包含三个子项目(pugixml、lua、您的lib)的项目,并使用add_子目录逐个处理它们。我同意丹的观点,你应该提供更多的信息。