CMake命令行构建失败但手动执行Makefile正常的问题排查
为老旧LynxOS 2.2.2配置CMake时的构建错误及解决方案疑问
初始配置阶段问题
我正尝试用CMake为老旧版本LynxOS(2.2.2)配置项目,已能生成Makefile,但执行以下CMake命令时出错:
cmake --debug-trycompile -G "Unix Makefiles" -D CMAKE_C_COMPILER=path/to/los/gcc.exe -D CMAKE_TOOLCHAIN_FILE=path/to/toolchain/los_tc.cmake .
报错信息:
Run Build Command(s):C:/Program Files/CMake/bin/cmake.exe -E env VERBOSE=1 -f Makefile cmTC_2e53c/fast && The parameter is incorrect
但手动导航到./CMakeFiles/CMakeScratch/TryCompile-cwzvwo目录执行make -f Makefile all时,Makefile可正常构建无报错。
我的工具链文件(Windows环境,路径已简化,实际路径正确)内容如下:
set(CMAKE_SYSTEM_NAME los222) set(CMAKE_SYSTEM_PROCESSOR ppc) set(CMAKE_CROSSCOMPILING 1) set(CMAKE_C_COMPILER /path/to/gcc.exe) set(CMAKE_FIND_ROOT_PATH /path/to/cdk/win32-xcoff-ppc;/path/to/cdk/win32-xcoff-ppc/usr/bin) set(CMAKE_MAKE_PROGRAM /path/to/make.exe) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
临时解决后的新构建问题
我通过在工具链文件中添加以下配置,暂时完成了Makefile生成:
set(CMAKE_C_COMPILER_FORCED 1) set(CMAKE_CXX_COMPILER_FORCED 1)
虽然生成的Makefile看似正确,但不确定这种方式是否合理。
现在执行cmake --build .时出现类似错误:
The parameter is incorrect CMake Error: Generator: execution of make failed. Make command was: -f Makefile &&
手动执行Makefile时,出现报错:
gcc: cannot specify -o with -c or -S and multiple compilations
追踪到问题出在build.make文件的这段代码:
CMakeFiles/fdm.dir/main.c.obj: CMakeFiles/fdm.dir/compiler_depend.ts @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=C:/project_files/_CMAKE/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/fdm.dir/main.c.obj" C:/RW_APPS/LW/2.2.2/ppc_dev/cdk/win32-xcoff-ppc/usr/bin/gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/fdm.dir/main.c.obj -MF CMakeFiles/fdm.dir/main.c.obj.d -o CMakeFiles/fdm.dir/main.c.obj -c C:/project_files/_CMAKE/main.c
移除-MF CMakeFiles/fdm.dir/main.c.obj.d部分后可正常构建,请问能否通过CMake配置控制这部分内容的生成?
内容的提问来源于stack exchange,提问作者Big Guy
相关产品推荐
相关产品推荐

