[英]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.