我有library.dll,他们有一个stdafx.cpp文件。我创建了一个CMakeLists来为Visual和MakeFiles制作解决方案。当我使用Generator" Visual Studio 12 2013"时,编译正常并采取以下几行:
set_target_properties(core PROPERTIES COMPILE_FLAGS "/Yustdafx.h")
set_source_files_properties(../core/src/stdafx.cpp PROPERTIES COMPILE_FLAGS "/Ycstdafx.h")
没有任何问题。
但是当我使用NMake MakeFiles生成器时,它会失败并输出此错误:
d:\path\to\core\src\filepath.cpp(4) : fatal error C1083: Ca
nnot open precompiled header file: 'stdafx.pch': No such file or directory
NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~3.0\VC\bin\cl.exe' : return code
'0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0
\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0
\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
为什么他用Visual Studio而不是Nmake找到预编译的头文件?
编译的唯一方法是删除上面为/ Yu和/ Yc添加的2行。这是正常的吗?
编辑: 这是我的CMakeLists.txt:
project(core CXX)
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO")
# Path of Release
SET(BIN_RELEASE_PATH "../../build/cmake_x86")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${BIN_RELEASE_PATH}/bin/" )
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${BIN_RELEASE_PATH}/bin/" )
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${BIN_RELEASE_PATH}/bin/" )
# Path of Debug
SET(BIN_DEBUG_PATH "../../build/cmake_x86d")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${BIN_DEBUG_PATH}/bin/" )
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${BIN_DEBUG_PATH}/bin/" )
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${BIN_DEBUG_PATH}/bin/" )
# Flags
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /D_UNICODE /D_USRDLL /DCORE_EXPORTS /DUNICODE")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi /GL /Oi /Gy /O2 /GR- /Gm- /DEBUG")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /GS /analyze- /W4 /Zc:wchar_t /ZI /Gm /Od /fp:precise /DWIN32 /D_WINDOWS /D_USRDLL /DCORE_EXPORTS /D_WINDLL /errorReport:prompt /WX- /Zc:forScope /RTC1 /GR- /Gd /Oy- /MDd /FaDebug /EHsc /nologo /FoDebug ")
# Files of library
add_library(
core
SHARED
../core/src/file.h
...
../core/src/file.cpp
)
set_target_properties(core PROPERTIES COMPILE_FLAGS "/Yustdafx.h")
set_source_files_properties(../core/src/stdafx.cpp PROPERTIES COMPILE_FLAGS "/Ycstdafx.h")
感谢您的帮助。