我试图将我的旧的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了解更多详细信息,因为这是非常明确和完整的.