【发布时间】:2021-12-07 05:44:52
【问题描述】:
我有一个(至少)两种语言有效的源文件。比如说,C 和 C++ 或 C 和 CUDA。
我想用两种语言编译这个文件,每次都编译到不同的库中。在最新版本的 CMake 中这样做的惯用方式是什么?
注意事项:
- 如果 CMake 的特定版本很重要,请指定我需要的最低版本。
- 相关:How can I configure cmake to compile a file twice with two different compilers?
【问题讨论】:
-
那么为什么不只是 1. 复制文件。 2.一个编译一个,一个复制。
-
@KamilCuk:我为什么要复制文件?这是一个文件,而不是两个文件。如果您的意思是在生成期间复制文件 - 那将非常糟糕,因为那时我将没有有效的调试信息。
-
Why would I want to copy the file?用不同的语言编译它。If you mean copy the file during generation何时 并不重要,但与add_custom_command无关。LANGUAGE属性是用文件名索引的,所以要用不同的语言编译同一个文件,你必须有不同的文件名,所以只需复制它。 -
@KamilCuk:我可以为另一种语言创建一个完全独立的项目。事实上,我的完美克隆会写它。无论如何,这行不通。它必须是同一个文件,而不是副本。我知道
LANGUAGE属性是按文件名索引的,这就是我想要解决的问题。 -
我 认为 source_properties 的范围是目录,所以你可以考虑做类似
set(USELANG C) add_subdirectory(dir uses_c) set(USELANG CXX) add_subdirectory(dir uses_cxx)和dir/CMakeLists.txt中的set_source_file_properties(file.c_or_cpp PROPERTIES LANGAUGE ${USELANG})。请尝试。
标签: cmake build cross-language