gpt4 book ai didi

c - 如何将 gcc 优化级别传递给 cmake 目标?

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:49 26 4
gpt4 key购买 nike

我有一个 C 项目,它使用 CMake 为每种库类型(静态、动态和共享)构建三个目标:

add_library(contact-static STATIC EXCLUDE_FROM_ALL lib/contact.c)
add_library(contact-shared SHARED EXCLUDE_FROM_ALL lib/contact.c)

add_executable(contactbook src/main.c)
target_link_libraries(contactbook contact-static)

add_executable(contactbook-static EXCLUDE_FROM_ALL src/main.c)
target_link_libraries(contactbook-static contact-static)
add_dependencies(contactbook-static contact-static)

add_executable(contactbook-shared EXCLUDE_FROM_ALL src/main.c)
add_dependencies(contactbook-shared contact-shared)
target_link_libraries(contactbook-shared contact-shared)

add_executable(contactbook-dynamic EXCLUDE_FROM_ALL src/main.c)
target_link_libraries(contactbook-dynamic contact-shared)
target_compile_definitions(contactbook-dynamic PRIVATE DYNLIB=true)
target_compile_options(contactbook-dynamic PRIVATE -rdynamic)
target_link_libraries(contactbook-dynamic dl)

问题是我必须提供传递给 make 命令的优化级别。

我已经尝试过了(但我都卡住了):

  • 通过 make 命令传递变量,例如 make -Dopt:STRING=0 但我不知道如何将其用作编译器标志
  • 为每个优化级别创建目标,但我无法将定义添加到 add_custom_target 目标

那么我该怎么做,将优化级别传递给 cmake 目标的最佳实践是什么?

最佳答案

您可以在命令行上运行 cmake 时更改任何 cmake 变量,如下所示:

cmake -DCMAKE_CXX_FLAGS="-Os" .

关于c - 如何将 gcc 优化级别传递给 cmake 目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42740294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com