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
Build 如果静态库已经存在,如何停止cmake重建静态库_Build_Cmake_Static Libraries - Fatal编程技术网

Build 如果静态库已经存在,如何停止cmake重建静态库

Build 如果静态库已经存在,如何停止cmake重建静态库,build,cmake,static-libraries,Build,Cmake,Static Libraries,我有以下项目结构 CmakeLists.txt src/main.cpp A/CMakeLists.txt A/test.cpp B/CMakeLists.txt B/other.cpp libs/ 构建配置的编写方式如下: 子目录被编译为静态库(存储到libs中),然后用于生成最终的二进制文件 现在假设我将这个项目转移到我的bud,libs中只有CMakeLists.txt、源文件和静态库 编译项目时,他/她必须重新编译所有源文件

我有以下项目结构

CmakeLists.txt
    src/main.cpp
      A/CMakeLists.txt
      A/test.cpp
      B/CMakeLists.txt
      B/other.cpp
   libs/
构建配置的编写方式如下: 子目录被编译为静态库(存储到libs中),然后用于生成最终的二进制文件

现在假设我将这个项目转移到我的bud,libs中只有CMakeLists.txt、源文件和静态库

编译项目时,他/她必须重新编译所有源文件,尽管库已经存在

有没有办法告诉cmake重用预构建的静态库

摘自top cmakelist.txt

add_subdirectory (${PROJECT_SOURCE_DIR}/src/A)
add_subdirectory (${PROJECT_SOURCE_DIR}/src/B)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/libs)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/libs)

add_executable(myBinary ${PROJECT_SOURCE_DIR}/src/main.cpp )
add_dependencies(myBinary A B)
target_link_libraries (myBinary A B)
project (A)
file(GLOB SOURCES "*.cpp")
add_library (A STATIC ${SOURCES})
子目录cmakelist.txt

add_subdirectory (${PROJECT_SOURCE_DIR}/src/A)
add_subdirectory (${PROJECT_SOURCE_DIR}/src/B)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/libs)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/libs)

add_executable(myBinary ${PROJECT_SOURCE_DIR}/src/main.cpp )
add_dependencies(myBinary A B)
target_link_libraries (myBinary A B)
project (A)
file(GLOB SOURCES "*.cpp")
add_library (A STATIC ${SOURCES})

当您使用CMake构建库时,它是在构建树中构建的,并且构建树不应转移到其他机器。因此,您可以只传输源树,而不是生成树。如果希望同事使用已生成的库,请将创建的库文件放入源代码树中(并调整
CMakeLists.txt
以使用预生成的库)。如果希望传递生成结果,建议安装它们并传递安装树。在这里,应该安装头和库。如果库将从另一个CMake项目中使用,您可能还需要一个包配置文件。@Tsyvarev.\u将创建的库文件放入源目录树中(并将CMakeLists.txt调整为使用预构建库,这正是我的问题。我应该如何做?假设我将库移动到src/libs。然后呢?如果您询问有关链接预构建库的问题,请参见以下问题:。