add_compile_options和add_link_options之间的差异也标记了每个选项支持的内容



多年来,我一直在使用.bat文件来构建我的应用程序。最近,由于它的优美性,我切换到了CMake,我遇到了一种情况,我不得不猜测应该放入CMake的add_link_optionsadd_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_optionsadd_compile_options支持的标志的信息。

我知道什么是链接器,但当涉及到add_link_options或链接器标志时,它就丢失了。

我习惯于在单行中编译所有内容,而现在在CMake中,所有内容似乎都涉及单独的步骤。

我不确定你的问题是什么,但这里有一个来自Wasm项目的完整工作示例,它设置了项目范围的严格模式并禁用了异常支持:

if (EMSCRIPTEN)
add_compile_options(-fno-exceptions "SHELL:-s STRICT=1")
add_link_options("SHELL:-s STRICT=1")
endif()

特别注意的是,由于它在emscripten设置中有一个[compile+link]标记,-s STRICT=1必须用于编译和链接,因此它出现在每个设置中。

if(EMSCRIPTEN)就在那里,因为这个项目也可以为Windows和Linux构建。

可以传递给编译器或链接器的选项取决于您使用的编译器或链接程序。例如,如果您派生GCC并添加一个-Wstackoverflow-copy-pasta选项,您可以将该选项传递给add_compile_options(),但其他使用标准GCC的人不能。

因此,您的问题的答案似乎是,阅读编译器和链接器文档。

相关内容

  • 没有找到相关文章

最新更新