簡體   English   中英

如何將gcc優化級別傳遞給cmake目標?

[英]How do I pass gcc optimization level to cmake targets?

我有一個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 -Dopt:STRING=0傳遞一個變量,比如make -Dopt:STRING=0但我不知道如何使用它作為編譯器標志
  • 為每個優化級別創建目標,但我無法為add_custom_target目標添加定義

那么我該怎么做呢?將優化級別傳遞給cmake目標的最佳做法是什么?

在命令行上運行cmake時可以更改任何cmake變量,如下所示:

cmake -DCMAKE_CXX_FLAGS="-Os" .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM