加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 将旧的makefile转换为CMake

发布时间:2020-12-16 03:20:47 所属栏目:百科 来源:网络整理
导读:我试图将我的旧的makefile代码转换为CMake.你可以帮我吗?这是我目前卡住的部分.我不知道如何将这些参数传递给编译器. COMPILE_FLAGS = -c -m32 -O3 -fPIC -w -DSOMETHING -Wall -I src/sdk/coreifdef STATIC OUTFILE = "bin/test_static.so" COMPILE_FLAGS_
我试图将我的旧的makefile代码转换为CMake.你可以帮我吗?这是我目前卡住的部分.我不知道如何将这些参数传递给编译器.
COMPILE_FLAGS = -c -m32 -O3 -fPIC -w -DSOMETHING -Wall -I src/sdk/core

ifdef STATIC
    OUTFILE = "bin/test_static.so"
    COMPILE_FLAGS_2 = ./lib/ABC.a
else
    OUTFILE = "bin/test.so"
    COMPILE_FLAGS_2 = -L/usr/lib/mysql -lABC
endif

all:
    g++ $(COMPILE_FLAGS) src/sdk/*.cpp
    g++ $(COMPILE_FLAGS) src/*.cpp
    g++ -fshort-wchar -shared -o $(OUTFILE) *.o $(COMPILE_FLAGS_2)
    rm -f *.o

谢谢!

解决方法

让Makefile语法映射到CMake:
COMPILE_FLAGS = -c -m32 -O3 -fPIC -w -DSOMETHING -Wall -I src/sdk/core

此声明直接映射到:

SET( COMPILE_FLAGS "-c -m32 -O3 -fPIC -w -DSOMETHING -Wall" )
INCLUDE_DIRECTORIES( src/sdk/core )

有条件的类型:

ifdef STATIC
  # Do something
else
  # Do something else
endif

以这种方式翻译成CMake:

OPTION(STATIC "Brief description" ON)
IF( STATIC )
  # Do something
ELSE()
  # Do something else
ENDIF()

要修改默认编译标志,您可以适当地设置变量CMAKE_< LANG> _FLAGS_RELEASE,CMAKE_< LANG> _FLAGS_DEBUG等.

最后编译一个可执行文件需要使用ADD_EXECUTABLE命令,这在很多CMake教程中都有介绍.

无论如何,我建议您参考在线documentation了解更多详细信息,因为这是非常明确和完整的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读