我正在尝试将旧的 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 教程中对此都有解释。
不管怎样我建议你参考网上的文档 http://www.cmake.org/cmake/help/documentation.html了解更多详细信息,因为它非常具有解释性和完整性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)