Skip to content

Commit 55dc880

Browse files
junjieqifacebook-github-bot
authored andcommitted
Change cmake to build googletest from source (#3319)
Summary: In the #3278, we to find_package to link to GTest. However, it needs to have googletest to build independently. Not everyone builds their googletest locally first. In this diff, we still try to build googletest from source and combine find_package together. Pull Request resolved: #3319 Test Plan: STEP 1: Install deps ``` conda install -y -q python=3.11 cmake make swig=4.0.2 mkl=2023 mkl-devel=2023 numpy scipy pytest gxx_linux-64 sysroot_linux-64 ``` STEP2: Compile ``` cmake -B build \ -DBUILD_TESTING=ON \ -DBUILD_SHARED_LIBS=ON \ -DFAISS_ENABLE_GPU=OFF \ -DFAISS_ENABLE_RAFT=OFF \ -DFAISS_OPT_LEVEL=avx2 \ -DFAISS_ENABLE_C_API=ON \ -DPYTHON_EXECUTABLE=$(which python) \ -DCMAKE_BUILD_TYPE=Release \ -DBLA_VENDOR=Intel10_64_dyn \ -DCMAKE_CUDA_FLAGS="-gencode arch=compute_75,code=sm_75" \ . ``` Reviewed By: algoriddle Differential Revision: D55358059 Pulled By: junjieqi fbshipit-source-id: 95ad4a745238b88b438728de64173f99d3d50dbe
1 parent 14b8af6 commit 55dc880

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

tests/CMakeLists.txt

+28
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,34 @@ if(FAISS_OPT_LEVEL STREQUAL "avx512")
5959
target_link_libraries(faiss_test PRIVATE faiss_avx512)
6060
endif()
6161

62+
include(FetchContent)
63+
FetchContent_Declare(
64+
googletest
65+
GIT_REPOSITORY https://github.com/google/googletest.git
66+
GIT_TAG 58d77fa8070e8cec2dc1ed015d66b454c8d78850 # release-1.12.1
67+
OVERRIDE_FIND_PACKAGE)
68+
set(BUILD_GMOCK CACHE BOOL OFF)
69+
set(INSTALL_GTEST CACHE BOOL OFF)
70+
FetchContent_MakeAvailable(googletest)
71+
72+
if(NOT EXISTS ${CMAKE_FIND_PACKAGE_REDIRECTS_DIR}/gtest-config.cmake
73+
AND NOT EXISTS ${CMAKE_FIND_PACKAGE_REDIRECTS_DIR}/GTestConfig.cmake)
74+
file(
75+
WRITE ${CMAKE_FIND_PACKAGE_REDIRECTS_DIR}/gtest-config.cmake
76+
[=[
77+
include(CMakeFindDependencyMacro)
78+
find_dependency(googletest)
79+
if(NOT TARGET GTest::GTest)
80+
add_library(GTest::GTest INTERFACE IMPORTED)
81+
target_link_libraries(GTest::GTest INTERFACE GTest::gtest)
82+
endif()
83+
if(NOT TARGET GTest::Main)
84+
add_library(GTest::Main INTERFACE IMPORTED)
85+
target_link_libraries(GTest::Main INTERFACE GTest::gtest_main)
86+
endif()
87+
]=])
88+
endif()
89+
6290
find_package(OpenMP REQUIRED)
6391
find_package(GTest CONFIG REQUIRED)
6492

0 commit comments

Comments
 (0)