我目前正在使用CMASE构建一些项目,主要平台是Visual C++、MINW GCC和Linux GCC。在使用GCC构建时,我需要指定
-Wno-invalid-offsetof
我目前的解决方案如下。。。
if ( "${CMAKE_GENERATOR}" MATCHES "^Visual Studio"
OR "${CMAKE_GENERATOR}" MATCHES "^NMake"
)
set (CPPLIB_COMPILER_OPTS "")
else ()
set (CPPLIB_COMPILER_OPTS "-Wno-invalid-offsetof")
endif ()
...
set_target_properties(sh_core PROPERTIES COMPILE_FLAGS "${CPPLIB_COMPILER_OPTS}")
# repeated for all targets
这是可行的,但是假设除visualstudio之外的所有生成器都将使用gcc构建显然是不安全的。首先,Borland编译器有IIRC生成器。更重要的是,使用make并不总是意味着使用gcc。
Cmake似乎会检查可用的编译器,并专门为该编译器生成makefile(这就提出了一个问题——为什么不至少可以选择直接构建项目,而不需要make这样的中间人呢?)。
在这种情况下,我希望能够在CMakeLists.txt文件中直接测试gcc。不过,到目前为止,我还没有找到一个合适的变量来测试,也没有任何其他明显的解决方案。
这可能吗?