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
如何在库文件夹cmake中自动从github加载库 我想在C++中创建我的第一个大项目。 我需要使用一些图书馆。所以我做了这个结构 ├── CMakeLists.txt ├── README.md ├── src │   ├── CMakeLists.txt │   ├── HelloWorld.cpp │   ├── HelloWorld.h │   └── main.cpp ├── tst | ├── CMakeLists.txt | ├── HelloWorld-test.cpp | └── main.cpp └── lib_C++_Cmake - Fatal编程技术网

如何在库文件夹cmake中自动从github加载库 我想在C++中创建我的第一个大项目。 我需要使用一些图书馆。所以我做了这个结构 ├── CMakeLists.txt ├── README.md ├── src │   ├── CMakeLists.txt │   ├── HelloWorld.cpp │   ├── HelloWorld.h │   └── main.cpp ├── tst | ├── CMakeLists.txt | ├── HelloWorld-test.cpp | └── main.cpp └── lib

如何在库文件夹cmake中自动从github加载库 我想在C++中创建我的第一个大项目。 我需要使用一些图书馆。所以我做了这个结构 ├── CMakeLists.txt ├── README.md ├── src │   ├── CMakeLists.txt │   ├── HelloWorld.cpp │   ├── HelloWorld.h │   └── main.cpp ├── tst | ├── CMakeLists.txt | ├── HelloWorld-test.cpp | └── main.cpp └── lib,c++,cmake,C++,Cmake,我想自动下载并将库放在lib文件夹中。在我的例子中,我想克隆googletest int lib文件夹。因此,我在我的主要项目CMakeLists.txt文件中尝试过: if(UNIX) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib/googletest) execute_process( COMMAND git clone "https://github.com/google/googl

我想自动下载并将库放在lib文件夹中。在我的例子中,我想克隆googletest int lib文件夹。因此,我在我的主要项目CMakeLists.txt文件中尝试过:

if(UNIX)
    file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib/googletest)
    execute_process(
            COMMAND git clone "https://github.com/google/googletest.git" googletest
            WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
    add_subdirectory(lib/googletest)
endif(UNIX)
但当我构建时,我有一个错误:

CMake Error at CMakeLists.txt:17 (add_subdirectory):
  add_subdirectory given source "lib/googletest" which is not an existing
  directory.

这里的问题是存储库被克隆到二进制目录,但是
add_子目录
查找相对于源目录的目录

您需要在此处使用带有绝对路径的
add_子目录
,并传递生成目录。此外,添加引号以避免文件路径中出现空格问题

set(REPO_PARENT "${CMAKE_CURRENT_BINARY_DIR}/lib")
set(REPO_DIR "${REPO_PARENT}/googletest")
set(REPO_BIN_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest_build")

file(MAKE_DIRECTORY ${REPO_DIR})
file(MAKE_DIRECTORY ${REPO_BIN_DIR})
execute_process(
        COMMAND git clone "https://github.com/google/googletest.git" googletest
        WORKING_DIRECTORY ${REPO_PARENT})

add_subdirectory(${REPO_DIR} ${REPO_BIN_DIR})

这里的问题是存储库被克隆到二进制目录,但是
add_子目录
查找相对于源目录的目录

您需要在此处使用带有绝对路径的
add_子目录
,并传递生成目录。此外,添加引号以避免文件路径中出现空格问题

set(REPO_PARENT "${CMAKE_CURRENT_BINARY_DIR}/lib")
set(REPO_DIR "${REPO_PARENT}/googletest")
set(REPO_BIN_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest_build")

file(MAKE_DIRECTORY ${REPO_DIR})
file(MAKE_DIRECTORY ${REPO_BIN_DIR})
execute_process(
        COMMAND git clone "https://github.com/google/googletest.git" googletest
        WORKING_DIRECTORY ${REPO_PARENT})

add_subdirectory(${REPO_DIR} ${REPO_BIN_DIR})

GTest使用
ExternalProject\u Add
:GTest使用
ExternalProject\u Add
记录此文档: