我已经(大部分)成功地为googletest设置了ExternalProject_Add。但是,我注意到像我的C++编译器选择、构建类型等这样的东西并没有自动转发到ExternalProject。
我可以通过在对ExternalProject_Add的调用中将其添加到CMAKE_ARGS中来轻松添加任何标志,如下所示:
CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
然而,这需要我列举所有可能需要转发到googletests的CMake调用的参数,而该列表相当庞大。如果我想要每个其他ExternalProject_Add,我也需要创建相同的列表。那似乎很脆弱和容易出错。有没有办法告诉CMake“转发”用户提供的配置呢?换句话说,如果我这样调用CMake:
cmake <path-to-project> -DCMAKE_C_COMPILER=/usr/bin/clang -DSOME_RANDOM_FLAG=stuff
那么我希望我的 ExternalProject_Add
调用可以提供相同的编译器选择和值给 SOME_RANDOM_FLAG
,无需显式列出这些名称。我不确定仅仅传递 CMake 的 ARGV 是否可行,因为说:
CC=/usr/bin/clang cmake <path-to-project>
希望能够完美地工作。
有什么想法可以实现这一点吗?
set(CL_ARGS ${CL_ARGS} CACHE STRING "comment")
将您的CL_ARGS保存到缓存中,并将整个结构包装在if (NOT CL_ARGS)
中即可。 - akwky