【问题标题】:Changing Compiler Flags for One Project in CMakeLists.txt在 CMakeLists.txt 中更改一个项目的编译器标志
【发布时间】:2013-03-17 21:29:22
【问题描述】:

我有一个指定多个可执行文件的 CMakeLists.txt。只有其中一个项目,我想使用静态运行时。

我在这里找到了这个解决方案:Setting the MSVC runtime in CMake

这涉及更改 CMAKE_CXX_FLAGS 和 CMAKE_C_FLAGS(以及其他)。

但是,这样做会更改每个项目的运行时库。通过我的测试,无论你在哪里设置这些,它都会改变它。

有没有办法只为一个项目做到这一点?

【问题讨论】:

    标签: visual-studio cmake


    【解决方案1】:

    如果您为“静态运行时”可执行文件提供其自己的 CMakeLists.txt 文件并通过 add_subdirectory 将其从父文件中包含,您将能够做到这一点。

    在子目录 CMakeLists.txt 中设置的变量不会影响父范围内的类似变量,因此您可以在父级 CMAKE_<LANG>_FLAGS_<BUILD> 中使用 /MD/MDd 标志,并将它们替换为 /MT/MTd 在子目录中。

    请注意,即使命令称为 add_subdirectory,它也不需要引用文件系统意义上的实际子目录 - 只是具有自己的 CMakeLists.txt 的某个其他目录。

    【讨论】:

    • 很抱歉没有早点回复,我的电脑一发布这条消息就遇到了很多问题。刚刚启动并运行,所以我会尽快测试。虽然我确信这会起作用,但对我来说似乎有点解决问题。一个问题:如果我确实使用了单独的 CMakeLists.txt 文件,我可以在父对象中访问该目标吗?我在父目录中包含了目录等。
    • @AdmiralJonB - 是的,目标将在父 CMakeList 范围内可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    相关资源
    最近更新 更多