【发布时间】:2018-04-04 15:26:19
【问题描述】:
我需要在编译项目时使用“-B”前缀。我用一个小的 hello world 程序运行了一个测试,但是我现在需要将它合并到一个大型项目的 CMakeLists 文件中。该项目使用 C、C++ 和 Fortran 代码。我需要所有语言的相同前缀。我应该如何指定?
【问题讨论】:
我需要在编译项目时使用“-B”前缀。我用一个小的 hello world 程序运行了一个测试,但是我现在需要将它合并到一个大型项目的 CMakeLists 文件中。该项目使用 C、C++ 和 Fortran 代码。我需要所有语言的相同前缀。我应该如何指定?
【问题讨论】:
可以设置对应的CMAKE_<LANG>_FLAGS变量,比如
set(PREFIX "your prefix")
set(CMAKE_C_FLAGS "-B${PREFIX}")
set(CMAKE_CXX_FLAGS "-B${PREFIX}")
set(CMAKE_Fortran_FLAGS "-B${PREFIX}")
或者,如果您希望将此标志附加到现有标志,请执行
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -B${PREFIX}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -B${PREFIX}")
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -B${PREFIX}")
请参阅 CMAKE_C_FLAGS、CMAKE_CXX_FLAGS 和 CMAKE_Fortran_FLAGS 的文档。
在我看来,应该有更直接和 CMake-ish 的方式来执行此操作,例如,可能将 CMAKE_PROGRAM_PATH 变量设置为 ${PREFIX} 或类似的东西,但我不确定。
【讨论】:
CMAKE_Fortran_FLAGS,我终于在文档中找到了这个:cmake.org/cmake/help/v3.11/envvar/…。我认为不存在像 CMAKE_FLAGS 这样的东西:不同的语言通常需要不同的标志。