【发布时间】:2021-03-24 01:44:57
【问题描述】:
多年来,我一直在使用.bat 文件来构建我的应用程序。最近,由于它的优雅性而切换到 CMake,我遇到了一种情况,我不得不猜测我应该在 CMake 的 add_link_options 和 add_compile_options 中添加的标志
我在我的 BAT 文件中使用的示例标志,
-s WASM=1 --bind -s MODULARIZE=1
而且,在 CMake 中,这个标志已经变成(经过反复试验),
add_compile_options("SHELL: -s WASM=1")
add_link_options("SHELL: --bind")
add_link_options("SHELL: -s MODULARIZE=1")
老实说,我找不到任何关于 add_link_options 和 add_compile_options 支持的标志的信息。
我知道什么是链接器,但在涉及 add_link_options 或链接器标志时丢失了。
我习惯于在单行中编译所有内容,现在在 CMake 中,所有内容似乎都涉及单独的步骤。
【问题讨论】:
-
什么都没有。您不应该使用这些,而是
target_*变体。但更一般地说,阅读一个好的指南,如cliutils.gitlab.io/modern-cmake -
我也有 target_* 变体,因为我有多个目标,所以我有必须在它们之间共享的公共标志。但无论哪种方式,无论是目标还是非目标,我仍然不知道如何处理标志。
-
当您运行
make clean && make VERBOSE=1时,它是否将编译和链接显示为两个单独的步骤?它是否在链接器命令中显示--bind而在编译器命令中显示WASM=1?使用-c运行的命令是编译,而不是链接。在我看来,您传递的所有 3 个选项可能都属于编译器阶段,但我可能是错的。如果您告诉我们您的项目现在是否可以正常构建,或者如果有问题,会有所帮助。
标签: c++ cmake compilation linker linker-flags