Makefile:根据CC/CX/FC值更改编译器标志
Makefile: change compiler flags based on CC/CXX/FC values
这似乎很荒谬,但我找不到问题。无论如何,我正在编写一个makefile,我只想有一个条件语句,根据GNU或Intel编译器是否用于编译程序,设置不同的CFLAGS,由环境变量CC.设置
现在,GNU制造手册中有一节关于这一点,它说要做以下事情:
https://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_7.html
ifeq ($(CC),gcc)
libs=$(libs_for_gcc)
else
libs=$(normal_libs)
endif
(好吧,设置库不是标志,但不管怎样,都是一样的想法)。好吧,但这肯定只是条件句如何工作的一个例子,因为在实践中,这显然是一种愚蠢的方式。CC变量可以包含除"gcc"之外的所有内容,并且仍然可以有效地使用GNUC编译器。即使只是在CC中指定编译器的绝对路径也会破坏这个例子。
那么,明智、稳健的方法是什么呢?此外,如果这很重要的话,我也想对C++和Fortran编译器的选择做同样的事情。
您说得对,这并不那么健壮。更健壮的方法可以是使用findstring命令,例如:
ifneq (,$(findstring gcc,$(CC)))
libs=$(libs_for_gcc)
else
libs=$(normal_libs)
endif
相关文章:
- Visual Studio 中是否有来自代码块的编译器标志的类似物?
- 如何将编译器标志限制为仅(我的)本地库?
- 为什么 gcc 编译器标志未知?
- 如何将编译器标志从 clang 传递给 nvcc
- 设置用于调试的 g++ 编译器标志
- 是否有任何编译器标志可以在下面的代码中用于报告有关 UB 的警告?
- std::function, Clang 6.0 & MSVC (10.0017134.12) - 可能的 ABI 错误或必需的编译器标志
- 是否可以使用 GCC 编译具有特定编译器标志的代码文件的一部分?
- CMAKE 如何在 C++ 中将编译器标志附加到末尾
- 如何在 Visual Studio Code 中包含编译器标志
- 是否有编译器标志可以使较新的 gcc 版本像旧版本一样构建
- 使用 noexcept 和编译器标志来关闭异常
- 运行时附加编译器标志
- 在每个平台上使用相同的模拟,具有正确的编译器标志
- 如何在 CMake 中添加"-l" (ell) 编译器标志
- CMake ADD_LIBRARY函数的编译器标志的哪个变量?
- Python 扩展:对 C 部分和 C++ 部分使用不同的编译器标志
- Visual Studio中的C 编译器标志
- EIGEN3 JACOBISVD根据编译器标志的不同奇异值
- 为什么缓冲区超支警告(C4789)仅在编译器标志 /o2中发生