如何在库文件夹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
我想自动下载并将库放在lib文件夹中。在我的例子中,我想克隆googletest int lib文件夹。因此,我在我的主要项目CMakeLists.txt文件中尝试过:如何在库文件夹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
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
记录此文档: