/ / dajte cmake do binárneho adresára

mať zmenu na binárny adresár - cmake

Povedzme, že mám projekt, v ktorom som už spustil program CMake v adresári .build:

project/
.build/
.src

V súčasnosti to musím urobiť, aby som spustil zostavenie:

cd .build
make

Rád by som bol schopný behať z koreňa môjho projektu, pravdepodobne s

make -f ./build/Makefile

ale nefunguje to. Chyby sa mi zdajú také

make[1]: CMakeFiles/Makefile2: No such file or directory
make[1]: *** No rule to make target `CMakeFiles/Makefile2".  Stop.
make: *** [all] Error 2

Dôvodom je skutočnosť, že program Makefile generovaný CMake predpokladá, že jeho pracovný adresár je rovnaký ako v ktorom sa nachádza (.build).

Je možné, aby CMake vygeneroval makefile tak, že makefile zmení pracovný adresár na miesto, kde sa nachádza?

odpovede:

0 pre odpoveď č. 1

Ďalším prístupom by bolo vytvorenie ďalšieho súboru Makefile v adresári, z ktorého chcete spustiť značku, s obsahom napríklad:

all:
cd ./build;  make $(MFLAGS)

Potom stačí zadať „make“ z adresára najvyššej úrovne.

Nemyslím si, že existuje spôsob, ako získať cmake na vygenerovanie makefilu, ktorý je možné spustiť z ľubovoľného miesta.

Možno by ste však mohli prinútiť cmake vytvoriť ďalšie pomocné makefile v koreňovom adresári projektu, s niektorými cmake, ako napríklad v CMakeLists.txt:

configure_file(ProjectRootMakefile.in ${CMAKE_SOURCE_DIR}/Makefile @ONLY)

(V prípade potreby nahraďte tento reťazec „$ {CMAKE_SOURCE_DIR}“ výrazom, ktorý sa preloží do koreňového adresára vášho projektu)

Vo svojom zdrojovom strome musíte vytvoriť súbor ProjectRootMakefile.in s obsahom ako:

all:
cd @CMAKE_BINARY_DIR@; make $(MFLAGS)

ktorá sa použije ako šablóna pre koreňový adresár projektu Makefile. (Uistite sa, že pred písmeno „cd“ používate znak tabulátora, nie medzery).

Tieto návrhy som netestoval, ale tu by malo byť dosť, aby som vám dal všeobecnú predstavu.


7 pre odpoveď č. 2

Musíte len povedať, kde je váš základný adresár, nie je potrebné meniť cmake.

make -C your_build_directory