这是我目前的目录结构:
projectFolder/CMakeLists.txt
projectFolder/src /* holds all project .cpp files */
projectFolder/include /* holds all header files*/
projectFolder/test /* holds all test .cpp files*/
projectFolder/ext/gtest /* holds all files associated with googletest,
including it's CMakeLists.txt file */
目前有效的是:
projectFolder/ext/gtest
中构建文件
projectFolder
中构建文件
醇>
不满意的是googletest位于我项目的子目录中,这意味着我必须为每个项目复制其源文件
我想要做的是从项目目录树中删除googletest的源文件,然后将其移至3rdParty
文件夹。然后,当我在项目build
文件夹中使用cmake和ninja时,我希望能够编译google测试,有效地为我拥有的每个项目创建单独的二进制文件,而无需在项目的diretory树中包含源文件(二进制文件将在项目的build
文件夹的子目录中新建。)
当我将gtest
移出项目文件夹时,出现以下错误:
When specifying an out-of-tree source a binary directory
must be explicitly specified.
当我用add_subdirectory(${EXT_PROJECTS_DIR}/gtest ${CMAKE_CURRENT_BINARY_DIR}/gtest)
指定二进制目录时,我得到了
ninja: error:
'gtest/src/googletest-build/libgtest.a', needed by
'google-test-examples_test', missing and no known rule to make it
我尝试将googletest与find_package
相关联,但cmake找不到googletest。另外,我不确定当我使用find_package
时,每个项目都会重新编译二进制文件,有人可以验证或反驳这个吗?
我在Mac上运行狮子