我正在尝试使用cmake
构建exe,但此项目https://github.com/cyberquarks/fubi没有IDE
这是cmake文件:
cmake_minimum_required(VERSION 3.10)
project(Fubi)
set(SOURCES DbgHelpDll.cpp Fubi.cpp SysExports.cpp fubimain.cpp stdafx.cpp)
add_executable(Fubi ${SOURCES})
target_link_libraries(Fubi PRIVATE DbgHelp)
set_property(TARGET Fubi PROPERTY ENTRY_POINT "fubimain.cpp")
include_directories("C:/local/boost_1_73_0")
link_directories(C:/local/boost_1_73_0/lib64-msvc-14.2)
set(CMAKE_SYSTEM_VERSION 6.0)
当我构建它时:
$ mkdir build
$ cd build
$ cmake -G "Visual Studio 16 2019" ..
$ cmake --build .
在构建过程中,它会抛出以下错误:
Fubi.cpp
C:\fubi\Fubi.cpp(40,5): error C4235: nonstandard extension used: '__asm' keyword not supported on this architecture [C:\fubi\build\Fubi.vcxproj]
代码是:
DWORD Fubi::Call_cdecl( const void* args, size_t sz, DWORD func )
{
DWORD rc;
__asm
{
// ...
}
return ( rc );
}
如何使用cmake构建可执行文件并允许内联汇编代码也进行编译?
更新:
当使用CLion IDE构建和运行该项目时,同样的项目也可以正常工作。
工具链:
调试配置:
Cmake设置:
运行配置:
1条答案
按热度按时间px9o7tmv1#
使用ChatGPT解决问题:
要使用CMake在32位模式下构建项目,可以使用-A选项指定体系结构。例如:
还可以在CMakeLists.txt文件中设置CMAKE_GENERATOR_PLATFORM变量以指定体系结构。例如:
或者,可以使用-G选项指定生成器的32位版本。例如,若要使用32位版本的Visual Studio,可以将-G“Visual Studio 16 2019”与-A Win32选项一起使用。
请注意,您可能需要在CMakeLists.txt文件中指定其他选项或变量,以确保在32位模式下生成项目。例如,您可能需要设置CMAKE_CXX_FLAGS变量以包括/m32标志,从而指定32位模式。
还值得注意的是,某些生成器可能不支持在32位模式下生成。在这种情况下,您可能需要使用不同的生成器或工具链来在32位模式下生成项目。