2017-02-08 5 views
0

Ich erstelle eine gemeinsame Bibliothek mit CMake und dem Ninja Generator unter Windows. Ich möchte inkrementelle Verknüpfung verwenden, um die Zeit für die Verknüpfung zu reduzieren.MSVC Inkrementelle Verknüpfung mit CMake und dem Ninja Generator

Ich habe versucht, CMAKE_SHARED_LINKER_FLAGS auf "/incremental" zu setzen, aber dieses Flag wird immer von einem überschrieben, der von CMake angehängt wird.

Ich habe auch versucht, MSVC_INCREMENTAL_DEFAULT auf ON zu setzen, aber das hatte keine Wirkung.

Also, wie kann ich inkrementelle Verknüpfung mit CMake und dem Ninja Generator arbeiten?

+0

In meiner VS Toolchain Datei habe ich 'SET (CMAKE_EXE_LINKER_FLAGS_RELEASE"/INCREMENTAL: JA "CACHE STRING" "FORCE)'. Ich nehme also an, SET (CMAKE_SHARED_LINKER_FLAGS/INCREMENTAL: YES "CACHE STRING" "FORCE)" sollte auch funktionieren, würde aber alle CMake-Standardwerte überschreiben. – Florian

+0

Ich habe es herausgefunden. Da ich 'CMAKE_BUILD_TYPE' auf' Release' gesetzt habe, musste ich 'CMAKE_SHARED_LINKER_FLAGS_RELEASE' mit' set (CMAKE_SHARED_LINKER_FLAGS_RELEASE "/ incremental") 'setzen – tofucoder

Antwort

0

Drehen meines Kommentars in einer Antwort

Ich verwende eine ähnliche SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "/INCREMENTAL:YES" CACHE STRING "" FORCE) in meine VS-Toolchain-Datei.

Beachten Sie, dass CMake seine Linker Flags aus dem allgemeinen, z. CMAKE_SHARED_LINKER_FLAGS und die Build-Typ spezifischen Teile wie CMAKE_SHARED_LINKER_FLAGS_RELEASE.

Also muss man entweder herausfinden, wo CMake gesetzt hat /INCREMENTAL:NO für gemeinsam genutzte Bibliotheken - wie Sie und ich getan habe - und überschreiben Sie mit:

set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/INCREMENTAL:YES") 

Oder Sie könnten über die verschiedenen Build-Konfiguration spezifischen Variablen iterieren wie:

Verwandte Themen