![](/img/trans.png)
[英]CMake add_library using the MODULE keyword doesn't create PDB file
[英]cmake add_library doesn't initialize static global variable
我有兩個源文件,main.cc,foo.cc。
#include <iostream>
using namespace std;
int main() {
cout << "main\n";
}
foo.cc
#include <iostream>
using namespace std;
class foo {
public:
foo() {
cout << "foo ctor\n";
}
};
static foo foo_obj;
當我這樣手動編譯時:
$ g ++ -c foo.cc -o libfoo.a
$ g ++ main.cc libfoo.a -o main
$ ./main
foo ctor
主要
但是當我使用cmake時,它不會打印foo ctor
。 這是CMakeLists.txt:
cmake_minimum_required(VERSION 3.2)
set(CMAKE_CXX_FLAGS "-std=c++11")
add_library(foo STATIC foo.cc)
add_executable(main main.cc)
target_link_libraries(main foo)
顯然,cmake已經完成了一些我沒想到的事情。
事實證明,可以使用-Wl,--whole-archive
避免這種情況。 例如寫這樣:
target_link_libraries(main
"-Wl,--whole-archive"
foo
"-Wl,--no-whole-archive"
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.