【问题标题】:Can I instruct g++ to compile a c++ source file with a different extension than ".cpp" etc?我可以指示 g++ 编译扩展名不同于“.cpp”等的 c++ 源文件吗?
【发布时间】:2020-06-24 15:51:19
【问题描述】:

我正在编写一个库/框架,可以将其配置为仅 CPU 实现或混合 CPU-GPU 实现。例如,假设我有以下文件:

LibraryMainCode.cpp
LibraryMainCode.h
Numerics.cpp
Numerics.h

对于仅 CPU 的实现,构建很简单:

g++ -I. -c Numerics.cpp -o Numerics.o
g++ -I. -c LibraryMainCode.cpp -o LibraryMainCode.o
(linking, etc)

对于混合实现,构建有点复杂:

g++ -I. -c Numerics.cpp -o Numerics.o
g++ -I. -c LibraryMainCode.cpp -o LibraryMainCode.o
nvcc -I. -x cu -dc LibraryMainCode.cpp -o XLibraryMainCode.o
(linking, etc)

即,我将这些“混合”文件中的每一个编译两次,一次作为仅 cpu 的对象,一次也使用 gpu 代码。

但是,我的代码库增长非常迅速,我想简单地让文件扩展名决定文件的编译方式。例如,我可以更改文件名:

LibraryMainCode.cpp
LibraryMainCode.h
Numerics.cppx
Numerics.h

然后,我的 makefile 可以简单地找到这些“.cppx”文件并相应地编译它们。不幸的是,如果我编写一个扩展名为“.cppx”的简单“Hello World”程序,那么 g++ 将无法编译它。

我意识到 g++ 有 a list of recognized c++ extensions,所以我可以对这些混合文件使用“.cxx”之类的东西,否则可以使用“.cpp”,但我想强调混合文件不一定是标准 c++代码,并且必须在makefile中进行特殊处理。

有没有一种简单的方法可以强制指示 g++ 编译具有任意扩展名的源文件?

【问题讨论】:

  • 为什么 g++ 不能编译你的“Hello World”?你如何调用编译器,错误是什么?
  • g++ -x c++ file.strange_extension
  • @Oliv 如果您作为答案发布,我会接受。这对我有用。

标签: c++ g++


【解决方案1】:

您可以使用-x <lang> 选项明确指定源文件的语言:

g++ -x c++ file.strange_extension

【讨论】:

    【解决方案2】:

    您可以在包含编译器选项的 makefile 中使用字符串变量,并将其用于每个 cpp 文件。

    【讨论】:

      猜你喜欢
      • 2017-04-06
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      • 2021-01-30
      • 2013-03-09
      相关资源
      最近更新 更多