代码之家  ›  专栏  ›  技术社区  ›  einpoklum

如何用两种不同的语言编译同一个输入文件?

  •  0
  • einpoklum  · 技术社区  · 3 年前

    我有一个名为的文件 foo.bar 。我想把它作为C++文件编译一次,变成 mycpplib 库目标,一次作为C文件,放入 myclib 目标我想用同样的方式 CMakeLists.txt .

    现在,我知道我可以任意设置源文件的相关语言,如下所示:

    set_source_files_properties(foo.bar PROPERTIES LANGUAGE C)
    

    但这对我来说似乎没有帮助。我能在CMake级别上做些什么吗?

    笔记:

    • 相关问题: The single-arbitrary-language case .
    • 对此有非CMake解决方案,例如复制文件;使用具有不同名称的符号链接;具有的文件 #include "otherfile" 作为其内容等。
    0 回复  |  直到 3 年前
        1
  •  2
  •   Tsyvarev    3 年前

    您可以创建库目标 mycpplib myclib 在中 不同的目录 (在不同的 CMakeLists.txt ). 这样你就可以打电话了 set_source_files_properties 在其中的目录中 mycpplib 库已创建,该调用不会影响 myclib .

    命令还有DIRECTORY和TARGET_DIRECTORY选项 set_source_files_properties ,这可能会影响属性可见的目录:

    # In 'c/CMakeLists.txt`
    # add_library(myclib ${CMAKE_SOURCE_DIR}/foo.bar)
    
    # In 'cpp/CMakeLists.txt`
    # add_library(mycpplib ${CMAKE_SOURCE_DIR}/foo.bar)
    
    # In CMakeLists.txt
    add_subdirectory(c)
    add_subdirectory(cpp)
    set_source_file_properties(foo.bar TARGET_DIRECTORY myclib
      PROPERTIES LANGUAGE C)
    set_source_file_properties(foo.bar TARGET_DIRECTORY mycpplib
      PROPERTIES LANGUAGE CXX)