【问题标题】:Converting old makefile to CMake将旧的 makefile 转换为 CMake
【发布时间】:2013-05-15 02:06:55
【问题描述】:

我正在尝试将旧的 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

谢谢!

【问题讨论】:

    标签: c++ c makefile cmake


    【解决方案1】:

    让我们尝试将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_RELEASECMAKE_<LANG>_FLAGS_DEBUG等。

    最后,可执行文件的编译需要您使用ADD_EXECUTABLE 命令,这在许多 CMake 教程中都有说明。

    无论如何,我建议您参考在线documentation了解更多详细信息,因为它非常解释和完整。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 2017-02-10
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多