问题描述
我正在尝试将旧的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教程中进行了解释.
无论如何,我建议您参考在线文档详细信息,因为这是完全解释和完整的.