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。然后呢?如果您询问有关链接预构建库的问题,请参见以下问题:。