Ich versuche ein c-Projekt mit CMake mit Visual Studio 14 zu erstellen, aber ich kann nicht die Compiler-Flags überschreiben, die von CMake gesetzt werden, was dazu führt, dass das Projekt fehlschlägt. Ich benutze diese Methode in meiner CMakeLists.txt-DateiCMake überschreiben native Compiler-Flags
Jede Hilfe würde sehr geschätzt werden!
Edit: vollständiges Beispiel der Haupt CMakeLists.txt ist hier
cmake_minimum_required(VERSION 3.4)
project(cuism C)
set(WINDOWS_SDK_INCLUDES "C:/Program Files\ (x86)/Microsoft\ SDKs/Windows/v7.1A/Include/")
set(WINDOWS_SDK_LIBRARIES "C:/Program Files\ (x86)/Microsoft\ SDKs/Windows/v7.1A/Lib")
set(WSOCK "WSock32.lib")
set(ODBC "odbc32.lib")
set(ODBCCP "odbccp32.lib")
set(includeDir "${CMAKE_SOURCE_DIR}/include/")
set(resourceDir "${CMAKE_SOURCE_DIR}/resources/")
include_directories(
${includeDir}
${resourceDir}
)
set(CMAKE_LIBRARY_PATH ${WINDOWS_SDK_LIBRARIES})
set(CMAKE_INCLUDE_PATH ${WINDOWS_SDK_INCLUDES})
set(flags "/nologo /c /EHsc /GS- /MTd /Od /TC /Zi /Zp2 /D _USING_V110_SDK71_")
set(CMAKE_C_FLAGS ${flags})
set(rc_flags /l0x809)
set(CMAKE_RC_FLAGS ${rc_flags})
set(linker_flags /NOLOGO /SUBSYSTEM:console /DLL)
set(CMAKE_LINKER_FLAGS ${linker_flags})
message(c flags are ${CMAKE_C_FLAGS})
message(rc flags are ${CMAKE_RC_FLAGS})
message(linker flags are ${CMAKE_LINKER_FLAGS})
message(linker EXE flags are ${CMAKE_EXE_LINKER_FLAGS})
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
set(RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
ADD_SUBDIRECTORY(cuimbct)
ADD_SUBDIRECTORY(cuimb)
ADD_SUBDIRECTORY(cuidll)
Jede sudbdirectory eine CMakeLists.txt ähnlich wie diese
set(src cuimb.c "${includeDir}port.c" cuimben.c cuimb.rc)
add_library(cuimb SHARED ${src})
target_link_libraries(cuimb ${WSOCK} ${ODBC} ${ODBCCP})
Fehler ist während des Linkens Stufe aufgrund Fehlercode LNK2019 man hat
Was Sie bisher versuchte? Wenn der obige Code hinter dem Befehl 'project()' steht, würde ich sagen, dass es funktionieren sollte. Für weitere Details was und wie es für mich funktioniert siehe z. [hier] (http://stackoverflow.com/questions/33828855/is-cmake-set-variable-recursive). – Florian
Erprobt sowohl add_definitions() und add_compile_options() Methoden –
Nur eine Vermutung: haben Sie versucht, den obigen Code wie 'set (Flags)/nologo/c/EHsc/GS-/MTd/Od/TC/Zi/Zitate hinzufügen Zp2/D _USING_V110_SDK71 _ ")'? – Florian