如何为我构建的每个库指定编译器标志?
我正在使用 CMAKE (Android) 构建几个静态和共享库。我有一个 CMakelists.txt 文件,它构建所有共享库和静态库。
现在我已经指定了适用于所有库的 C 和 C++ 编译器标志。
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpermissive -fno-elide-constructors -DHAVE_POLL -DANDROID -DNO_SSL_DL -DUSE_IPV6 mfloat-abi=softfp -mfpu=neon")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++14 -fpermissive -fno-elide-constructors -DHAVE_POLL -DANDROID -DNO_SSL_DL -DUSE_IPV6 mfloat-abi=softfp -mfpu=neon")
但是,我需要为我正在构建的每个库指定不同的 C 标志和 CXX 标志集。因此,对于 lib1.so,我有一组 C 和 CXX 标志,对于 lib2.so,我有另一组 C 和 CXX 标志。
我想我可以使用 set_target_properties 但我不知道如何使用,而且我无法找到一个示例来展示如何使用 set_target_properties 为库设置 C 和 C++ 编译器标志。
I am using CMAKE (Android) to build several static and shared libraries. I have one CMakelists.txt file which builds all the shared and static libraries.
Right now I have specified C and C++ compiler flags that apply to all the libraries.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpermissive -fno-elide-constructors -DHAVE_POLL -DANDROID -DNO_SSL_DL -DUSE_IPV6 mfloat-abi=softfp -mfpu=neon")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++14 -fpermissive -fno-elide-constructors -DHAVE_POLL -DANDROID -DNO_SSL_DL -DUSE_IPV6 mfloat-abi=softfp -mfpu=neon")
However, I have a need to specify different sets of C flags and CXX flags for each library that I am building. So for lib1.so I have one set of C and CXX flags and for lib2.so I have another set of C and CXX flags.
I think I can use set_target_properties but I am not sure how and I wasn't able to find an example that shows me how to use set_target_properties to set the C and C++ compiler flags for a library.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要将
target_compile_options
/target_compile_definitions
与 生成器表达式。像这样的东西:
You need to use
target_compile_options
/target_compile_definitions
with generator expressions.Something like this: